Sla*_*ava 5 android back-button recreate onbackpressed
问题描述:
我的应用程序有主要活动和设置活动.每次关闭设置活动后,主活动都会重新创建.
可以通过finish()在两个位置关闭主活动(应用程序退出):操作栏中的主页按钮和后退按钮(硬件或弹出栏).
Home按钮工作没有问题,Back按钮在开始时工作,但如果用户在Settings Activity中,关闭它并返回到Main Activity,onBackPressed()函数不再被调用.
如果我删除娱乐,后退按钮工作正常,就像主页按钮一样.
所以,如果有人知道为什么重新创建()弄乱Back按钮?
谢谢.
部分相关代码:
主要活动:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Open Settings Activity
case R.id.menuSettings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivityForResult(intent, REQUEST_SETTINGS);
return true;
// Close the App
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case REQUEST_SETTINGS:
// Recreate activity
recreate();
break;
}
}
// Close App on Back Button Click
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
Run Code Online (Sandbox Code Playgroud)
}
我找到了解决方案...
在调用方法之前似乎需要完成一些事情recreate()。我在内部调用了它onResume,而你在内部调用了onActivityResult方法。
因此,我专门给它一点喘息时间来完成其流程(100 毫秒对我的情况来说效果很好)。
这是我的解决方案:
// Use this instead of calling recreate() directly.
// This will call recreate() after 100 milliseconds, ASYNCHRONOUSLY:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recreate();
}
}, 100);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
485 次 |
| 最近记录: |