java - 为什么我不能在 JAVA 方法中使用变量?

标签 java android variables scope

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、如何解决?

最佳答案

该引用位于匿名 Button.OnClickListener 子类中,因此 this 指的是监听器,而不是 Activity 。

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

关于java - 为什么我不能在 JAVA 方法中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076087/

相关文章:

android - 如何在默认主题中对齐 ActionBar 中心的标题(Theme.Holo.Light)

python - 将列表分配给类实例

python 2.7 MYsql语句中的变量替换问题

php - 从 AJAX 获取数据 - 如何

javascript - 如何在 AngularJS 中使用 JSON 数组?

android - 禁用 Android 12 默认启动画面

java - NLTK -> 使用斯坦福依赖分析器 ->

android - 如何为 Android 渲染脚本创建一个无符号 8 整数数组?

java - Neo4j - Spring 从标签获取字符串列表

java - 我的代码挂起,但当我调试它时它永远不会挂起