首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onBackPressed不是从工具栏调用的

onBackPressed不是从工具栏调用的
EN

Stack Overflow用户
提问于 2016-01-21 18:38:35
回答 3查看 1.1K关注 0票数 0

我知道有很多关于这个话题的问题,但我找不到一个可行的解决方案。

我希望在我按下工具栏中的左箭头时调用onBackPressed()。我使用的是appcompat-v7:23:1:0。左箭头在我的应用程序中的任何地方都有效,除了这里。我怀疑这与我从片段开始活动的事实有关。

Activity_A >启动Fragment_A (扩展SupportMapFragment) >,启动Activity_B。

当Activity_B中的后退箭头被按下时,我想返回到Fragment_A。目前,箭头对点击没有响应,onBackPressed不是从工具栏调用的,但它是在硬件后退按钮被按下时调用的。

我试着添加了

代码语言:javascript
复制
@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

我在清单中添加了这个:

代码语言:javascript
复制
 <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>

(为了清楚起见,活动名称将被替换)

EN

回答 3

Stack Overflow用户

发布于 2016-01-21 21:05:30

这个问题似乎与我的activity_B的xml布局有关。

我在工具栏下面有一个scrollView。scrollView有一个android:layout_below="@id/contact_center",它的id不存在于该活动中。

我知道这听起来很奇怪,但在反复查看代码之后,我100%确定这导致onBackPress()没有响应。

因此,对于有类似问题的人,请注意您的xml布局,其中可能存在导致此奇怪问题的错误。另外,对其他活动的复制-粘贴代码也要非常谨慎;)

谢谢你的帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-01-21 18:46:21

将此添加到您的onCreateOptionMenu中

代码语言:javascript
复制
int id = item.getItemId();

    if (id == android.R.id.home) {
        NavUtils.navigateUpFromSameTask(this);

        return true;
    }

还要添加以下内容

代码语言:javascript
复制
getSupportActionBar().setDisplayShowHomeEnabled(true);
票数 0
EN

Stack Overflow用户

发布于 2018-07-11 21:27:00

尝尝这个

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34921396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档