方法在android中调用onBackPressed

时间:2013-04-18 06:47:51

标签: android android-activity baseadapter

我正在研究Android中的Base适配器,如果我在某些活动中按onBackPress,我想知道在BaseAdapter类中调用哪个overriden方法。请帮助我,我已经搜索过,并没有找到任何解决方案。

4 个答案:

答案 0 :(得分:1)

您可能拥有listview,并且您为listview设置了自定义适配器。 Listview在您的活动中。

class MyActivity extends Activity
{
   @Override
   public void onCreate(Bundle savedInstancestate)
   {
          setContentView(R.layout.main);
          ListView lv= (ListView) findViewById(R.id.listview);
          CustomAdapter cus= new CustomAdapter(MyActivity.this);
          lv.setAdapter(cus);   
   }
 }
 class CustomAdapter extends BaseAdapter
 {
    ....................
 }

所以当你按下后退按钮时,当前活动会从后面的堆栈弹出,被破坏并且后面堆栈中的前一个活动会成为焦点。这是默认行为。

http://developer.android.com/guide/components/tasks-and-back-stack.html

您可以覆盖活动中的onKeyDown(params)

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    onBackPressed();

}

return super.onKeyDown(keyCode, event);
}

public void onBackPressed() {
   //do something
finish();
return;
}

答案 1 :(得分:0)

在您的活动中覆盖onBackPressed并相应地将数据更改为适配器,然后致电notifyDataSetChanged

答案 2 :(得分:0)

onBackPressed将在您的Activity类中激活。它不是BaseAdapter类的事件。因此,在Activity类中覆盖onBackPressed方法。

答案 3 :(得分:0)

您可以通过reference将活动constructor传递给适配器,例如:

CustomAdapter customAdapter=CustomAdapter(getApplicationContext(),arrayList,HomeActivity.this);

并在您的自定义适配器

public class CustomAdapter extends BaseAdapter {
Context context;
ArrayList<CategoryModel> arrCategoryModel;
AppCompatActivity activity;
public CustomAdapter(Context context, ArrayList<CategoryModel> arrCategoryModel, AppCompatActivity activity)
{
    this.context=context;
    this.arrCategoryModel=arrCategoryModel;
    this.activity=activity;
} }

现在,您可以随时随地拨打activity.onBackPressed();