我知道有很多关于这个主题的问题,但我找不到可行的解决方案。
当我按下tootbar中的左箭头时,我希望调用onBackPressed()。 我正在使用appcompat-v7:23:1:0。 左箭头在我的应用程序中随处可见但在这里。我怀疑它与我从片段开始活动的事实有关。
Activity_A>启动Fragment_A(扩展SupportMapFragment)>它启动Activity_B。
当我从Activity_B按下后退箭头时,我想返回Fragment_A。 目前,箭头没有响应点击,onBackPressed不会从工具栏中调用,而是按下硬件后退按钮时。
我已尝试添加
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
我在清单中添加了这个:
<activity
android:name=".activity.Activity_B"
android:windowSoftInputMode="stateHidden"
android:parentActivityName=".activity.Activity_A" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activity.Activity_A"
/>
</activity>
(替换活动名称以澄清)
答案 0 :(得分:1)
问题似乎与我的activity_B的xml布局有关
我在工具栏下面有一个scrollView。该scrollView有一个android:layout_below="@id/contact_center"
,其id不存在于该活动中。
我知道这听起来很奇怪但是我已经使用代码前进了,我完全确定这会导致onBackPress()无法响应。
因此对于有类似问题的人,请注意你的xml布局,可能会出现错误导致这个奇怪的问题。此外,非常varefull与其他活动的复制粘贴代码;)
感谢您的帮助。
答案 1 :(得分:0)
在onCreateOptionMenu
中添加此内容int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
return true;
}
还添加此
getSupportActionBar().setDisplayShowHomeEnabled(true);
答案 2 :(得分:0)
尝试一下
public void setUpToolbar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Toolbar Title");
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onBackPressed() {
Toast.makeText(getApplicationContext(), "here", Toast.LENGTH_SHORT).show();
super.onBackPressed();
}