您可以使用ActionBar的下拉导航中的Intent启动活动吗?
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:
...
...
}
}
这导致手机崩溃并重新启动(看起来像内存不足)。
答案 0 :(得分: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:
...
...
}
}
答案 1 :(得分:1)
我怀疑这是因为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:
...
...
}
}
答案 2 :(得分:0)
您绝对可以从操作栏下拉导航中启动活动。
活动是否会启动然后崩溃?