1

我想让用户从列表中保存最喜欢的项目列表,所以我使用带有复选框的 Listview 显示完整列表,用户将选中或取消选中列表中的项目。

当用户按下后退按钮时,我希望能够将选中的项目保存到 SD 卡上的单独文件中。

我在我的活动中使用以下方法:

@Override
  public void onBackPressed() {
  // TODO Auto-generated method stub

  }

但是,我在 OnCreate 方法中创建的列表在 onBackPressed 方法中不可用 - 即它超出了范围。

如果我尝试将列表传递给 onBackPressed 方法,如下所示:

@Override
  public void onBackPressed(ArrayList<HashMap<String, Object>> checked_list) {
  // TODO Auto-generated method stub

  }

然后我得到错误:

“SetFavourites 类型的 onBackPressed(ArrayList>) 方法必须覆盖或实现超类型方法”并且 Eclipse 提示删除 @Override。

但是当我这样做时,永远不会调用 onBackPressed 方法。

如何将变量传递给 onBackPressed 方法,以便在退出之前对 Activity 中的数据执行操作?

谢谢

4

2 回答 2

1

您可以在类的范围内定义一个变量,即在onCreate() 之外。

class Example {
    int mVisible = 0;

    void onCreate() {
        int notVisible = mVisible;
    }

    void onBackPressed() {
        mVisible = 10;
    }
}
于 2012-05-08T23:56:07.247 回答
1

您不能使用@Override覆盖不存在的方法。换句话说onBackPressed(ArrayList<...> foo),它不是Activity该类的现有方法。

要访问您的列表,请将其声明为Activity...的实例成员

public class MyActivity extends Activity {

    ArrayList<HashMap<String, Object>> checked_list;

    // onCreate(...) here

    // onBackPressed() here

}
于 2012-05-09T00:00:53.323 回答