1

您可以使用 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:
           ...
           ...
     }
}

这导致手机崩溃并重新启动(看起来像内存不足)。

4

3 回答 3

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:
           ...
           ...
     }
}
于 2013-06-19T08:39:28.980 回答
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:
            ...
            ...
    }
}
于 2013-05-03T13:06:58.193 回答
0

您绝对可以从操作栏下拉导航中启动活动。

活动是否启动然后崩溃?

于 2012-11-08T02:28:23.363 回答