7

ここに画像の説明を入力

アクションバー

私は(写真の1番)、小さな矢印とアプリアイコンと画面の左上にあるボタンについて話している. 「ブラック アクティビティ」テンプレートを選択すると、自動的に定義されます。

私のアプリにはかなり巨大な階層グラフがあり、現在約 25 のアクティビティがあります。基本的にいくつかのチュートリアルを表示しているだけで、カテゴリに従ってナビゲートできます。

アクションバーの「戻る」(?)ボタンは、私が持っているすべての画面にあり、保持したいと思います。コードにエラーは表示されませんが、実際にそのボタンを押すと、アプリが動作しなくなります。私が望むのは、実際の戻るボタンの機能を、画像に示したその (番号 1) ボタンで複製することです。押すと、一番上の画面が閉じ、最後の画面が開きます。画面を閉じるだけです。

私が試したこと:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:

            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

これは、バグのあるボタンとアクション バーを膨らませる関数です。コード全体を置き換えて、「Finish」関数を呼び出そうとしましたが、惨めに失敗しました。その左上のボタン専用に作られた機能を見つけることができませんでした...

このボタンがタッチされたときに、スタックの一番上の画面(前景にある画面)を閉じたい。これを行う方法 ?

4

2 に答える 2

31

最も簡単な方法は次のとおりだと思います。

Afrom activityあなたが activity を開始していると仮定していますB。アクティビティから、アクションバーの左上の戻るボタンを押してBアクティビティに戻りたいとします。A単に電話this.finish()するかActivityName.this.finish()、そこから:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            this.finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

これで現在のアクティビティは終了です。ただし、アクティビティが多い場合は、すべてのアクティビティでこれを行う必要がある場合があります。その手間を省くために、クラスに let を呼び出すことができますAbstractActivity。拡張しActivityます。次に、他のすべてのアクティビティ クラスを拡張して、そのクラスを拡張できます( AbstractActivity)。内部AbstractActivityに上記のコードを入れることができます。これで、そのコードはすべてのアクティビティに対して有効になり、その機能はすべてのアクティビティに対して実装されます。基本的に、この種のもの(継承)は、多くのクラスに適用できる共通の機能がある場合にいつでも使用できます。

LogCatエラーが発生した場合は、さらにサポートが必要な場合は投稿してください。これがお役に立てば幸いです。

于 2013-07-14T11:12:54.287 に答える