如何覆盖在Android操作栏后退button?

这里是我的查询我想自定义活动后退button在操作栏不在硬键后退button? 我已经覆盖了onBackPressed()方法它与我的模拟器后退button,而不是

与行动酒吧后退button。

我希望它与行动栏发生? 我怎样才能做到这一点? 这是我的代码

@Override public void onBackPressed() { Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); return; } 

我已经使用这个敬酒是否后退按下是否工作,但实际的实施变化回到以前的活动。 但是这不适用于顶部操作栏上的button(除了活动的标题)。

请任何人都可以指定我的问题。

我想你想覆盖主页button的点击操作。 您可以在您的活动中像这样覆盖此function。

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); break; } return true; } 

如果您希望ActionBar后退button与硬件后退button的行为方式相同:

  @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return false; } 

有两件事要记住,用户可以按下button或按下操作栏主页button。
所以,如果你想将他redirect到相同的目的地,那么你可以做到这一点。

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

这将使用户意图按下任一键或操作栏button。

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

如果要通过按ActionBar主页button返回到Activity前一个实例而不重新创build它,则可以重写getParentActivityIntent方法以使用后一堆栈中的一个:

 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public Intent getParentActivityIntent() { return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); } 

编辑:
你也可以达到同样的结果
将您父级活动的launchMode设置为singleTop。
因此,在清单中将android:launchMode="singleTop"设置为父级活动。
或者你可以使用标志FLAG_ACTIVITY_CLEAR_TOP和UP意图。
参考: 提供导航

 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } //noinspection SimplifiableIfStatement if (id == R.id.signIn) { return true; } return super.onOptionsItemSelected(item); } /////////////////// @Override public void onBackPressed() { super.onBackPressed(); finish(); } 

我已经做到了,只用了两步,

第1步:转到AndroidManifest.xml并在标签中添加参数 – android:parentActivityName =“。home.HomeActivity”

例如:

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

第2步:在ActivityDetail中为上一页/活动添加动作

例如:

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