显示操作栏上的后退button

我试图在Action bar上显示一个“ Back button来移动上一页/活动或主页面(第一次打开)。 而我做不到。

我的代码。

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

代码在onCreate

以及这是一个简单的显示button

 actionBar.setDisplayHomeAsUpEnabled(true); 

然后你可以在onOptionsItemSelected中定制返回事件

 case android.R.id.home: this.finish(); return true; 

我认为onSupportNavigateUp()是最好的和最简单的方法来做到这一点

检查下面的代码

如果你想以编程方式在onCreate()方法中添加这一行

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

注意:确保Actionbar不为空。

并重写此方法

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

而已
或者非编程方式,您可以将清单文件中的活动添加到元素中

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

神奇的事情发生在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); } } 

官方解决scheme

将这两个代码片段添加到您的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

将这些行添加到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); } } 

希望这会帮助你..!

试试这个代码,只有当你需要后退button时才考虑它。

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //YOUR CODE getSupportActionBar().setDisplayHomeAsUpEnabled(true); //YOUR CODE } @Override public boolean onOptionsItemSelected(MenuItem item) { onBackPressed(); return true; } 

在你的onCreate方法中添加:

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

AndroidManifest.xml定义父活动(按下操作栏中的后退button后将被调用的活动):

在Manifest的<activity>定义中,添加下面的行:

 android:parentActivityName="com.example.activities.MyParentActivity" 

我知道我有点晚了,但是能够通过直接跟随文档来解决这个问题。

添加元数据标签到AndroidManifest.xml (所以系统知道)

  <activity android:name=".Sub" android:label="Sub-Activity" android:parentActivityName=".MainChooser" android:theme="@style/AppTheme.NoActionBar"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainChooser" /> </activity> 

接下来,启用MainActivity的后退(向上)button

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_child); // my_child_toolbar is defined in the layout file Toolbar myChildToolbar = (Toolbar) findViewById(R.id.my_child_toolbar); setSupportActionBar(myChildToolbar); // Get a support ActionBar corresponding to this toolbar ActionBar ab = getSupportActionBar(); // Enable the Up button ab.setDisplayHomeAsUpEnabled(true); } 

而且,你们都将成立!

来源: Android开发人员文档

我知道上面是很多有用的解决scheme,但是这次我读了这篇文章(当前Android Studio 2.1.2与sdk 23)上面的某些方法不起作用。

以下是我的子活动的解决scheme是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> 

其次,确保您的子活动扩展了AppCompatActivity ,而不是FragmentActivity。

第三,重写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); } } 

希望这会有所帮助!

试试这个,在你的onCreate()

  getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); 

而对于clickevent,

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

我以这种方式解决

 @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case android.R.id.home: onBackPressed(); finish(); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onBackPressed(){ Intent backMainTest = new Intent(this,MainTest.class); startActivity(backMainTest); finish(); } 

我的工作代码返回屏幕。

 @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); } 
  public void initToolbar(){ //this set back button getSupportActionBar().setDisplayHomeAsUpEnabled(true); //this is set custom image to back button getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image); } //this method call when you press back button @Override public boolean onSupportNavigateUp(){ finish(); return true; } 

要做到这一点,只需要两个步骤,

第1步:转到AndroidManifest.xml并在<activity>标记中添加此参数 – android:parentActivityName=".home.HomeActivity"

例:

 <activity android:name=".home.ActivityDetail" android:parentActivityName=".home.HomeActivity" android:screenOrientation="portrait" /> 

第2步:在ActivityDetail为上一页/ ActivityDetail添加您的action

例:

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