从onclicklistener访问变量

时间:2012-10-30 20:30:10

标签: java android

所以我有一个onItemLongClickListener用于列表视图,它获取传入的参数'int position'。在里面,我有一个alertDialogBu​​ilder,它有两个按钮。我有另一个按钮的onclickListener。我需要从第二个监听器内部访问该位置。反正有没有把它变成一个全球性的呢?


public boolean onItemLongClick(AdapterView parent, View itemView, int position, long id){

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(BookFace.this);
    alertDialogBuilder.setTitle("Choose an option.");
    alertDialogBuilder
    .setMessage("What would you like to do?")
    .setCancelable(true)
    .setPositiveButton("Edit", new DialogInterface.OnClickListener(){

        @Override
        public void onClick(DialogInterface dialog, int which) {
            Intent intent = new Intent();
            intent.putExtra("position", position); //Can't access this variable
            intent.setClass(SomeClass.this, EditActivity.class);
            startActivity(intent);
    }

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果将位置更改为final,则应该允许您从onClick方法中访问它。

答案 1 :(得分:0)

在Java中,只有在首次声明为final时,才能从内部类声明中访问外部变量。所以你可以添加:

final int selectedPosition = position;

到你的方法的顶部,并在你的额外,即

中使用该值
intent.putExtra("position", selectedPosition);