Android:使用带有homeAsUpButton的工具栏会调用onCreate而不是onResume

时间:2017-03-08 08:26:54

标签: android

我在这样的活动中使用工具栏:

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

这个代码在AppCombatActivity中:

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

在Manifest中我定义了父活动。

有效。但每次我按下按钮“onCreate'在父活动上被调用。但那不是我想要的。当我按下设备上的后退按钮时,它会返回上一个活动,然后调用onResume。当我按下工具栏中的后退按钮时,它也应该这样做。

任何想法? 谢谢!

3 个答案:

答案 0 :(得分:1)

在您的清单文件中添加

launchmode="singleTop"

在父活动的声明中。 查看LorenzCK的答案: https://stackoverflow.com/a/15933890/5987223

答案 1 :(得分:0)

根据您的要求添加此内容......

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            //Start activity which you want... to call onCreateMethod
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

答案 2 :(得分:0)

此代码适用于我:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return super.onCreateOptionsMenu(menu);
}

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

        default:
            return super.onOptionsItemSelected(item);
    }
}