1

ActionBarのドロップダウンナビゲーションからインテントを使用してアクティビティを起動できますか?

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

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 に答える