2013-04-18 113 views
0

我在Android的基本适配器上工作,我想知道哪些重写方法在BaseAdapter类中调用,如果我在某些活动中按onBackPress。请帮助我,我已经搜索并没有找到任何解决方案。方法获取调用onBackPress在android

回答

0

的onBackPressed会在你的Activity类被激活。它不是BaseAdapter类的事件。所以在Activity类中覆盖你的onBackPressed方法。

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 
{ 
    .................... 
} 

因此,当你按下后退按钮当前活动窗体弹出返回堆叠,破坏和以前的活动在后面堆栈采用focus.This的默认行为。

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; 
} 
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();无论你想要的地方。