web-dev-qa-db-ja.com

アクションバーに戻るボタンを追加する

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

ビューを次のようにしたいです。 enter image description here

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

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

ActionBar actionBar = getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

しかし、それは機能しません。

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

62
haythem souissi

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);
    }
}
127
Danesh

追加

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にチェックを追加しました。

54
clami219

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

@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;
}

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

26
Jason Saruulo

設定後

 actionBar.setHomeButtonEnabled(true);

AndroidManifest.xmlで親アクティビティを構成する必要があります

<activity
    Android:name="com.example.MainActivity"
    Android:label="@string/app_name"
    Android:theme="@style/Theme.AppCompat" />
<activity
    Android:name="com.example.SecondActivity"
    Android:theme="@style/Theme.AppCompat" >
    <meta-data
        Android:name="Android.support.PARENT_ACTIVITY"
        Android:value="com.example.MainActivity" />
</activity>

詳細についてはこちらをご覧ください http://developer.Android.com/training/implementing-navigation/ancestral.html

24
BoschAlex

これにアプローチするには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の設定を変更するどのアクティビティがSettingsアクティビティを呼び出すかわからない場合は、次のように作成できます。最初に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);
    }
}

これでうまくいくはずです!

10
Von Iobro

onOptionsItemSelectedメソッドでmenuItem.getItemId()Android.R.id.homeに対してチェックする必要があります

Android Sherlock ActionBar Upボタン の複製

6
advantej

最初にこれを使用します:

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);
  }
 }
6
Arunendra

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

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);
        }
    }
6
Amit Vaghela

よりシンプルで良い:API> = 16の場合

マニフェストの各アクティビティに「parentActivityName」を追加するだけです。戻るボタンは自動的に親アクティビティに移動します。

<activity
        Android:name="com.example.myfirstapp.DisplayMessageActivity"
        Android:label="@string/title_activity_display_message"
        Android:parentActivityName="com.example.myfirstapp.MainActivity" >
6
M. Usman Khan

他の誰かがソリューションを必要とする場合

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == Android.R.id.home) {
        onBackPressed();
    }

    return super.onOptionsItemSelected(item);
}
5
Saad Mahmud

この行をonCreate()メソッドに追加します

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

次に、このメソッドをオーバーライドします

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