64

アクションバーに戻るボタンを追加しようとしています。

ビューを次のように表示します。 ここに画像の説明を入力

アクションバーの左側に戻るボタンを追加したい。

このコードを追加しました

ActionBar actionBar = getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

しかし、うまくいきません。

どうすればこれを修正できますか?

4

11 に答える 11

128

設定後 actionBar.setHomeButtonEnabled(true);

次のコードを追加します。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; goto parent activity.
            this.finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
于 2012-12-06T10:04:34.223 に答える
54

追加

actionBar.setHomeButtonEnabled(true);

そして、次を追加します

@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{       
    switch (menuItem.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(menuItem);
    }
}

naXaが提案したitemIdように、アクション バーに複数のボタンがある場合に正しく機能するように、にチェックを追加しました。

于 2013-07-01T16:10:39.573 に答える
27

これは私のために働いた:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_your_activity);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // ... other stuff
}

@Override
public boolean onSupportNavigateUp(){
    finish();
    return true;
}

SupportActionBar で戻るボタンを使用すると、onSupportNavigateUp() メソッドが呼び出されます。

于 2015-01-20T20:25:41.207 に答える
10

これには 2 つの方法があります。

オプション 1: Android マニフェストを更新する 設定アクティビティが常に同じアクティビティから呼び出される場合は、Android マニフェストで関係を作成できます。Android では、ActionBar に「戻る」ボタンが自動的に表示されます。

<activity
    android:name=".SettingsActivity"
    android:label="Setting Activity">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.example.MainActivity" />
</activity>

オプション 2: ActionBar の設定を変更する どのアクティビティが設定アクティビティを呼び出すかわからない場合は、次のように作成できます。ActionBarActivity を拡張するアクティビティで最初に (@imports が探している互換性のレベルと一致していることを確認してください)。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings_test);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(true);
}

次に、「戻るボタン」の押下を検出し、Android に現在開いているアクティビティを閉じるように指示します。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; goto parent activity.
            this.finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

それはそれを行う必要があります!

于 2015-01-10T04:28:57.937 に答える
7

まずこれを使用します:

ActionBar bar = getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);

onOptionsItemSelected次に、メソッドでボタンクリックの動作を設定します

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
         finish();
        return true;
     default:
        return super.onOptionsItemSelected(item);
  }
 }
于 2015-01-20T14:03:05.557 に答える
6

メソッドで確認menuItem.getItemId()する必要がありますandroid.R.id.homeonOptionsItemSelected

Android Sherlock ActionBar Up ボタンの複製

于 2013-02-01T23:11:47.030 に答える
6

これを使用して戻るボタンを表示し、前のアクティビティに移動します。

final ActionBar actionBar = getSupportActionBar();
        assert actionBar != null;
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeAsUpIndicator(R.drawable.back_dark);


@Override
    public boolean onOptionsItemSelected(final MenuItem item) {

        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
于 2015-12-22T10:34:44.053 に答える