我在应用设置中进行了某些更改后,在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
?
任何想法将不胜感激。谢谢!
答案 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()
来解决问题。