Android 您能否从ActionBar中的下拉导航启动活动意图
您能否使用ActionBar下拉导航中的意图启动活动Android 您能否从ActionBar中的下拉导航启动活动意图,android,android-intent,android-actionbar,Android,Android Intent,Android Actionbar,您能否使用ActionBar下拉导航中的意图启动活动 ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() { @Override public boolean onNavigationItemSelected(final int itemPosition,long itemId) { launchActivity(itemPosition);
ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(final int itemPosition,long itemId) {
launchActivity(itemPosition);
return true;
}
};
getActionBar().setListNavigationCallbacks(adapter, navigationListener);
}
以下是该方法:
protected void launchActivity(int itemPosition) {
Intent intent;
switch (itemPosition) {
case 1:
intent = new Intent(this, MyActivity.class);
startActivity(intent);
break;
case 2:
...
...
}
}
这会导致手机崩溃并重新启动(看起来内存不足)。您完全可以从操作栏下拉导航启动活动
活动是否启动然后崩溃?我怀疑这是因为
onNavigationItemSelected
在活动启动时被调用,即用户根本没有从导航列表中选择任何内容
在launchActivity
方法中,您需要检测要启动的活动是否是已在运行的活动,如果是,请不要尝试启动另一个活动。这里发生的情况是,您的活动开始,立即启动onNavigationItemSelected
,然后您的launchActivity
方法启动另一个活动,然后重复此过程,直到您的设备内存不足
您需要将代码添加到launchActivity
方法:
protected void launchActivity(int itemPosition) {
Intent intent;
switch (itemPosition) {
case 1:
if (<this activity is not MyActivity>) {
intent = new Intent(this, MyActivity.class);
startActivity(intent);
}
break;
case 2:
...
...
}
}
受保护的无效启动活动(int itemPosition){
意图;
开关(位置){
案例1:
如果(){
intent=新的intent(this,MyActivity.class);
星触觉(意向);
}
打破
案例2:
...
...
}
}
这很简单,但确实需要技巧
protected void launchActivity(int itemPosition, Context context) {
Intent intent;
switch (itemPosition) {
case 1:
intent = new Intent(context, MyActivity.class);
startActivity(intent);
break;
case 2:
...
...
}
}