2013-04-22 17 views
22

アクションバーを設定しましたが、ホームアップボタンをクリックしても何も起こりません。 以下の2つのオプションが有効になっていますので、ホームアクティビティに自動的に移動しないでください。Androidのアクションバーのホームボタン

ab.setHomeButtonEnabled(true); 
ab.setDisplayHomeAsUpEnabled(true); 

アクションバーあなたがここに何が起こるかを定義する必要があり

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 

    final String[] activities; 
    Resources res = getResources(); 
    activities = res.getStringArray(R.array.activities); 

    ActionBar ab = getActionBar(); 
    ab.setHomeButtonEnabled(true); 
    ab.setDisplayHomeAsUpEnabled(true); 
    ab.setTitle(R.string.app_name); 
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    ab.show(); 

    /** Create an array adapter to populate dropdownlist */ 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, activities); 

    /** Setting dropdown items and item navigation listener for the actionbar */ 
    getActionBar().setListNavigationCallbacks(adapter, navigationListener); 

    /** Enabling dropdown list navigation for the action bar */ 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    return true; 
} 
+0

このリンクのコードをチェックすると役立ちます。 [コードのリンク](http://stackoverflow.com/questions/11304483/properway-to-handle-action-bar-up-button/37692750#37692750) –

答えて

52

、動作は自動的には行われません - あなたはどこへ行く、それを指示する必要があります。

しかし、現在の回答はすべてのAndroidデザインガイドラインを破っていますので、別の回答を追加する必要があります。

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
     case android.R.id.home: 
      Intent homeIntent = new Intent(this, HomeActivity.class); 
      homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(homeIntent); 
    } 
    return (super.onOptionsItemSelected(menuItem)); 
} 

戻ったばかりのスタックを介して行くのではなく、親アクティビティが表示されます:あなたは本当にやって欲しいthe documentation

を参照してください。この線に沿って何かです。また、バックスタックをクリアするためにIntent.Flagを追加しました。これは、ホームアクティビティに行くときに便利な機能です。ユーザーが '上へ'ボタンを使用しているときに、バックスタックが混乱するのを防ぐことができます。

+0

多くのありがとう、これは私が探していたものですが、私はそれが本当にメインクラスに戻りますtrueに設定すると仮定! – user1875797

+7

+1 for "Back!= Home"(Y) – Farhan

+2

iOS版のアプリの流れと一致する必要があるため、クライアントがホームボタンを元に戻すように主張した回数はカウントできません。 。 – npace

5

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

あなたのコードでこれらの行を追加します。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    case android.R.id.home: 
     System.out.println("Pressed Back Button"); 
     break; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
    return false; 
} 
8

あなたもn個あなたのアプリケーションは、それが押されたときに何をすべきか知っていることを確認するEED:他の人が言ったように

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
    case android.R.id.home: 
     // ProjectsActivity is my 'home' activity 
     super. onBackPressed(); 
     return true; 
    } 
    return (super.onOptionsItemSelected(menuItem)); 
} 
6

We公式documentに与えられた通りAndroidManifast.xmlファイルに私たちの子アクティビティにメタデータを定義する必要があります。

<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.DisplayMessageActivity" 
    android:label="@string/title_activity_display_message" 
    android:parentActivityName="com.example.myfirstapp.MainActivity" > 
    <!-- The meta-data element is needed for versions lower than 4.1 --> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.example.myfirstapp.MainActivity" /> 
</activity> 

バージョンが4.1以上であり、あなたがしなければならない場合、メタデータを定義する必要はありませんコードで行ったように、アクションバーのホームボタンを有効にします。戻るボタンコードを使用する必要はなく、アンドロイドアプリでうまくいきます。Helper+

関連する問題