【问题标题】:Why I can't use the variable in a JAVA method?为什么我不能在 JAVA 方法中使用变量?
【发布时间】:2014-01-12 14:56:55
【问题描述】:
public class MainActivity extends ActionBarActivity {

    private Context cx;
    private int pageNumber=0;


    private void populateList() {
        AsyncHttpClient client = new AsyncHttpClient();
        RequestParams paras = new RequestParams();
        paras.put("page",this.pageNumber+1);
        ............
    }

    private Button.OnClickListener loadMoreButtonOnClick = new Button.OnClickListener(){
        public void onClick(View v){
            AsyncHttpClient client = new AsyncHttpClient();
            RequestParams paras = new RequestParams();
            paras.put("page",this.pageNumber+1); //can't resolve symbol "pageNumnber"
            client.get("http://APIAddressHere",paras,new AsyncHttpResponseHandler(){
                @Override
                public void onSuccess(int statusCode, org.apache.http.Header[] headers, byte[] responseBody){
                    //it's ok;
                }

                @Override
                public void onFailure(int statusCode, org.apache.http.Header[] headers, byte[] responseBody, Throwable error)
                {
                    // Response failed :(
                }

            });
        }
    };
}

在我评论过的第二个函数(loadMoreButtonOnClick)中,IDE 抛出一个错误,似乎我无法访问我在那里创建的变量(private int pageNumber)。

但是我可以在populateList()函数中访问pageNumber,为什么我不能在loadMoreButtonOnClick()中访问它,是不是意味着我已经在不同的上下文中了?

系统是:JDK 6,Android Studio 0.4.2,我的项目是从API 9到API 18

我是 Java 新手。所以我的问题是:
1. 为什么?
2. 如何解决?

【问题讨论】:

    标签: java android variables scope


    【解决方案1】:

    该引用在您的匿名 Button.OnClickListener 子类中,因此 this 指的是侦听器,而不是活动。

    简单地使用pageNumber 而不是this.pageNumber 应该可以工作,因为周围的范围仍然有效。或者,MainActivity.this.pageNumber 也可以工作(让编译器知道您希望引用外部类的实例)。

    【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多