大家好,又见面了,我是你们的朋友全栈君。
在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。
我也收到错误:E/ActivityThread: Performing pause of activity that is not resumed
从this问题开始,我了解到不能从onResume调用此函数。但是我从onActivityResult打电话给他们。另外,使用处理程序来调用recreate可以解决问题,但会导致眨眼,对用户而言很糟糕。这可能是什么错误?没有recreate的情况下如何使用Handler?
任何想法将不胜感激。谢谢!
最佳答案
在onResume()之前调用OnActivityResult()。您可以做的是在OnActivityResult()中设置一个标志,您可以在onResume()中检入,如果该标志为true,则可以重新创建活动。
您实际上可以做的是完成活动并开始相同的活动,而不是重新创建活动。您将获得相同的效果。可能是这样的:public class MainActivity extends AppCompatActivity {
private boolean shouldRecreate = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(“AG”, “onCreate() called”);
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 0);
}
@Override
protected void onResume() {
super.onResume();
if (shouldRecreate){
finish();
startActivity(new Intent(this, MainActivity.class));
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0){
shouldRecreate = true;
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137296.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...