アクションバーに戻るボタンを追加しようとしています。
ビューを次のようにしたいです。
アクションバーの左側に戻るボタンを追加したい。
このコードを追加しました
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
しかし、それは機能しません。
どうすれば修正できますか?
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);
}
}
追加
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
にチェックを追加しました。
これは私のために働いた:
@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で戻るボタンを使用すると呼び出されます。
設定後
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
これにアプローチするには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);
}
}
これでうまくいくはずです!
onOptionsItemSelected
メソッドでmenuItem.getItemId()
をAndroid.R.id.home
に対してチェックする必要があります
最初にこれを使用します:
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);
}
}
これを使用して、戻るボタンを表示し、前のアクティビティに移動します。
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);
}
}
よりシンプルで良い:API> = 16の場合
マニフェストの各アクティビティに「parentActivityName」を追加するだけです。戻るボタンは自動的に親アクティビティに移動します。
<activity
Android:name="com.example.myfirstapp.DisplayMessageActivity"
Android:label="@string/title_activity_display_message"
Android:parentActivityName="com.example.myfirstapp.MainActivity" >
他の誰かがソリューションを必要とする場合
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == Android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
この行をonCreate()メソッドに追加します
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
次に、このメソッドをオーバーライドします
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}