2016-05-31 13 views
1

私は私のツールバーを定義するXMLコードの以下の部分がありますツールバーで「back-arrow」の作業を行う方法は?

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:columnCount="5" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:useDefaultMargins="true" 
    android:alignmentMode="alignBounds" 
    android:columnOrderPreserved="false"> 

    <android.support.v7.widget.Toolbar android:id="@+id/toolbar_setting" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary"/> 

    ... // other code here 

をし、次のように(AppCompatActivity由来)SettingsActivityのコードは次のとおりです。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.settings); 

    // Set toolbar, allow going back. 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_setting); 
    toolbar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setTitle("Settings"); 

コンパイルおよび実行次のように私は、ツールバーを参照してくださいコード:

enter image description here

B左側の矢印をクリックしても、前のメニューに戻りません。私はここで何が欠けていますか?

答えて

2

を行うクリックをリッスンする必要があります。

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

    return(super.onOptionsItemSelected(item)); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
} 

あなたはこのコードをしようとした場合、あなたは矢印をクリックすると、あなたの戻るボタンが押されたように動作します。

+0

ありがとうございました!しかし、 'android.R.id.home'はどこに定義されていますか? – Alex

+0

RフォルダのそのボタンにアクセスするのはアンドロイドのデフォルトIDです。あなたはそれを定義しませんでした。デフォルトのアニメーションや色にもアクセスできます(例:android.R.animやandroid.R.color)。 –

1

onOptionsItemSelectedにあなたがandroid.R.id.homeによってその小さな矢印にアクセスすることができ、その後何かに

case android.R.id.home: 
    // do something with the click 
    break; 
1

1レベル上に移動する必要がある場合は、AndroidManifest.xmlに次の変更を加えます。

<activity 
     android:name=".CurrentActivity" 
     android:parentActivityName=".OneLevelUpActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".OneLevelUpActivity" /> 
</activity> 

onCreate()toolbar.setHomeButtonEnabled(true);

<meta-data>は、以前のAPIバージョン(<API level 16)をサポートすることです追加します。