Action-Bar返回键不起作用

时间:2018-05-01 15:55:16

标签: java android android-actionbar back-button

我在我的应用中制作了一个操作栏后退按钮: Settings.java:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

和 的AndroidManifest.xml:

    <activity android:name=".Settings">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="at.mrminemeet.reviewcheck.MainActivity" />
    </activity>

但是我经历过,软件密钥调用了“onPause”,但操作栏不会这样做。

我查了一些其他帖子,所以告诉我试试

@Override
public void onBackPressed(){
     // stuff
     super.onBackPressed();
}

但它没有做任何事情。它完全忽略了我添加了代码。

我做错了吗?

其他帖子: Post 1 Post 2

1 个答案:

答案 0 :(得分:0)

您需要覆盖onOptionsItemSelected()并使用ID android.R.id.home覆盖向上按钮操作。我要做的是在按下主页按钮时调用onBackPressed()功能。示例代码将如下所示

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        getActivity().onBackPressed()
        return true;
    }
    return super.onOptionsItemSelected(item);
}

有关详细信息,请参阅Android documentation on providing up Navigation

请注意,以下答案是在编辑原始问题之前编写的。我将它留在这里并回答了上述问题。

原始答案:

如果你是专门谈论

@Override
public void onBackPressed(){
     super.onBackPressed();
     // stuff
}

然后问题在于您在代码之前调用super.onBackPressed()。此调用将返回上一个活动或退出应用程序,具体取决于调用它的活动。而是将其更改为 -

@覆盖

public void onBackPressed(){
     //your code to do stuff here
     super.onBackPressed();
}

它将首先执行您的代码,然后返回。