0

私はActionbarSherlockを使用していて、ホーム ボタンを有効にしたいと考えています。そのため、ベース アクティビティ
を呼び出します。setHomeButtonEnabled(true)

public class BaseFragmentActivity extends SherlockFragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Theme_Sherlock);
        super.onCreate(savedInstanceState);
        getSupportActionBar().setHomeButtonEnabled(true); // Here
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home: {
                Intent intent = new Intent(this, HomeActivity.class);
                // startActivity(intent);
                // startActivityIfNeeded(intent, 0);
                return true;
            }
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

startActivity(intent)またはを使用するstartActivityIfNeeded(intent, 0)HomeActivity毎回再作成されます (アクティビティはマップをレンダリングし、再作成は面倒です)。

  • アプリの階層を 1 ステップ戻すだけなので、呼び出しfinish()たくありません。代わりに、私はいつもに戻りたいと思っていHomeActivityます。
  • さらに、 ActionBar および setDisplayHomeAsUpEnabled()AndroidManifest.xmlについて説明されているように、動作を構成できれば便利です。
  • に戻るときにバックスタックをクリアするのも常識かもしれませんHomeActivity。それについてどう思いますか。
4

2 に答える 2

0

そのアクティビティには単一インスタンス起動モードを使用することを検討します。

AndroidManifest.xml

<activity  android:launchMode="singleInstance">
...
</activity>

参照

このアクティビティの 1 つのインスタンスのみを実行できるようにします。このアクティビティは、それ自体が実行されている一意のタスクを取得します。同じインテントで再び起動された場合、そのタスクは前倒しされ、その Activity.onNewIntent() メソッドが呼び出されます。このアクティビティが新しいアクティビティを開始しようとすると、その新しいアクティビティは別のタスクで開始されます。タスクの詳細については、タスクとバック スタックのドキュメントを参照してください。

于 2013-09-06T12:37:54.327 に答える