在Activity中重新创建后未调用onResume

时间:2016-02-22 20:50:36

标签: android onresume onactivityresult recreate

我在应用设置中进行了某些更改后,在v(ii) w(ii)内呼叫library("leaflet") library("rgdal") boroughs <- readOGR(path.expand("~/Downloads/nybb_15d/nybb.shp"), "nybb") boroughs <- spTransform(boroughs, CRS("+proj=longlat +datum=WGS84")) leaflet() %>% addProviderTiles("CartoDB.DarkMatterNoLabels", options= providerTileOptions(opacity = 0.99)) %>% addPolygons(data = boroughs, stroke = FALSE, smoothFactor = 0.5) %>% fitBounds(-73.9, 40.7, -73.7, 40.9) 。娱乐后,不会调用recreate

我也收到错误:

onActivityResult

this问题,我了解到无法从MainActivity调用此函数。但我是从onResume打电话给他们的。同时使用处理程序调用{​​{1}}可以解决问题,但会导致对用户看起来不好的闪烁。这可能是什么问题?如果没有E/ActivityThread: Performing pause of activity that is not resumed ,我该如何使用onResume

任何想法将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

在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;
    }
}
}

答案 1 :(得分:0)

我终于通过SettingsActivity向[{1}}中的BroadcastReciever发送广播并在MainActivity内调用recreate()来解决问题。