195

前のページ/アクティビティまたはメイン ページ (最初のオープニング) に移動するためBack buttonにを表示しようとしています。Action barそして、私はそれをすることができません。

私のコード。

ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);

コードは にありonCreateます。

4

25 に答える 25

215

まあ、これは戻るボタンを表示するための簡単なものです

actionBar.setDisplayHomeAsUpEnabled(true);

そして、onOptionsItemSelected で back イベントをカスタマイズできます。

case android.R.id.home:
this.finish();
return true;
于 2013-07-23T06:08:17.783 に答える
210

onSupportNavigateUp()これが最善かつ最も簡単な方法だと思います。以下の手順を確認してください。ステップ 1 は必須で、ステップ 2 には代替手段があります。

ステップ 1 戻るボタンを表示する:onCreate()メソッドにこの行を追加して、戻るボタンを表示します。

assert getSupportActionBar() != null;   //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true);   //show back button

ステップ 2 バック クリックの実装:このメソッドをオーバーライドします。

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

以上で完了です
または ステップ 2 の代替方法: 次のように、マニフェスト ファイルのアクティビティにメタを追加できます。

<meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="MainActivity" />

編集:AppCompatアクティビティを使用していない場合supportは、単語を使用しないでください。使用できます

getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`

// And override this method
@Override 
public boolean onNavigateUp() { 
     finish(); 
     return true; 
}

@atariguy さん、コメントありがとうございます。

于 2016-05-12T11:17:48.233 に答える
71

で魔法が起こりonOptionsItemSelectedます。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
于 2013-03-28T21:06:06.257 に答える
46

公式の解決策

これら 2 つのコード スニペットを SubActivity に追加します

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

メタデータとparentActivityをマニフェストに追加して、下位SDKをサポートします。

 <application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.SubActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

ここを参照してください: http://developer.android.com/training/implementing-navigation/ancestral.html

于 2014-04-11T17:20:54.103 に答える
33

これらの行を onCreate() に追加します

android.support.v7.app.ActionBar actionBar = getSupportActionBar();
   actionBar.setHomeButtonEnabled(true);
   actionBar.setDisplayHomeAsUpEnabled(true);

および onOptionItemSelected で

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

これがあなたを助けることを願っています..!

于 2015-10-21T06:12:14.940 に答える
17

onCreateメソッドに次を追加します。

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

AndroidManifest.xml親アクティビティ (アクション バーの [戻る] ボタンが押されたときに呼び出されるアクティビティ) で定義する場合:

<activity>マニフェストの定義に、次の行を追加します。

android:parentActivityName="com.example.activities.MyParentActivity"
于 2015-01-03T16:52:15.487 に答える
7

上記が多くの役立つ解決策であることは知っていますが、今回この記事を読みました (現在の Android Studio 2.1.2 with SDK 23) 上記のいくつかの方法が機能しません。

以下は、サブアクティビティの私のソリューションは MapsActivity です

まず、parentActivity を追加する必要があります

AndroidManifest.xml

このような :

<application ... >
    ...
    <!-- Main activity (which has no parent activity) -->
    <activity
        android:name="com.example.myapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        .....
        android:parentActivityName=".MainActivity" >
        <!-- Support Parent activity for Android 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myapp.MainActivity" />
    </activity>
</application>

次に、サブアクティビティがAppCompatActivityFragmentActivity ではなく extends であることを確認してください。

第三に、オーバーライドonOptionsItemSelected()方法

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

これが役立つことを願っています!

于 2016-07-02T03:47:39.740 に答える
4

これを試してください、あなたの onCreate() で

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(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);
        }
    }
于 2015-08-18T15:38:14.513 に答える
3

私の場合; android:parentActivityName次のように attr をアクティビティに追加する必要がありました。

<activity
 android:name=".AboutActivity"
 android:label="@string/title_activity_about"
 android:parentActivityName=".MainActivity" />

戻るボタンが表示され、期待どおりに機能します。

于 2020-11-26T02:00:54.487 に答える
2

マニフェスト.xml

<activity
            android:name=".Activity.SecondActivity"
            android:label="Second Activity"
            android:parentActivityName=".Activity.MainActivity"
            android:screenOrientation="portrait"></activity>
于 2019-03-11T04:41:30.700 に答える
1
ActionBar actionBar=getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

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

    return super.onOptionsItemSelected(item);
}
于 2018-04-05T11:29:10.937 に答える
1

画面に戻る私の作業コード。

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case android.R.id.home:

        Toast.makeText(getApplicationContext(), "Home Clicked",
                Toast.LENGTH_LONG).show();

        // go to previous activity
        onBackPressed();

        return true;

    }

    return super.onOptionsItemSelected(item);
}
于 2015-10-14T06:57:00.507 に答える