我想允许用户从列表中保存喜欢的项目列表,因此我使用带有复选框的Listview显示完整列表,用户将选中或取消选中列表中的项目。
当用户按下后退按钮时,我希望能够将检查的项目保存到SD卡上的单独文件中。
我在我的Activity中使用以下方法:
@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&gt;)方法必须覆盖或实现超类型方法”并且Eclipse会提示删除@Override。
但是当我这样做时,onBackPressed方法永远不会被调用。
如何将变量传递给onBackPressed方法,以便我可以在退出之前对Activity中的数据执行操作?
由于
答案 0 :(得分:1)
您可以在类的范围内定义变量,即在onCreate()之外。
class Example {
int mVisible = 0;
void onCreate() {
int notVisible = mVisible;
}
void onBackPressed() {
mVisible = 10;
}
}
答案 1 :(得分:1)
您无法使用@Override
覆盖不存在的方法。换句话说,onBackPressed(ArrayList<...> foo)
不是Activity
类的现有方法。
要访问您的列表,请将其声明为Activity
...
public class MyActivity extends Activity {
ArrayList<HashMap<String, Object>> checked_list;
// onCreate(...) here
// onBackPressed() here
}