我正在尝试通过打开GPS设置的alertdialog启用GPS后刷新我的活动。 我实现了onResume函数,但结果我在我的logcat上得到了这个:
performing stop of activity that is not resumed(...)
我看过这个post,但我无法弄清楚我的代码(或我的onResume功能)有什么问题,以及如何在从GPS设置回来后刷新我的活动。
你可以帮帮我吗? 这是我的MainActivity.java答案 0 :(得分:2)
致电
时gps.showSettingsAlert();//inside this use startActivityForResult(new Intent().setClass(this, MainActivity.class), result_code);
编辑:您的方法应该在MainActivity.class中,而不是在服务中,因为服务没有ui,所以无法获得结果。
public void showSettingsAlert(Context context){
AlertDialog.Builder alertdialog = new AlertDialog.Builder(context);
alertdialog.setTitle("Oups ! pas de données GPS");
alertdialog.setMessage("GPS n'est pas activé sur votre appareil, voulez vous l'activer ?");
/*
handling the buttons :
*/
alertdialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, RESULT_CODE_GPS);
}
});
// on pressing cancel button
alertdialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertdialog.show();
}
以下是您的活动结果方法,该方法将在用户从“设置”页面按下后调用。
@SuppressLint("NewApi") @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == RESULT_CODE_GPS && resultCode == 0){
// @SuppressWarnings("deprecation")
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_MODE);
if(provider != null && !provider.isEmpty()){
Log.v("mAINaBBB", " Location providers: "+provider);
//Start searching for location and update the location text when update available.
// Do whatever you want
}else{
Log.v(, "Nothing put on");
//Users did not switch on the GPS
}
}
}
现在,在MainAcitivity中,调用
之前调用的方法if(gps.canGetlocation() ){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
device_location = new ParseGeoPoint(latitude,longitude);
Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
}else{
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
showSettingsAlert(MainActivity.this); //**This line should be changed then**
}
答案 1 :(得分:0)
我收到了这个错误 - 我发现这是由于我的代码错误 - 我正在重新加载自我活动 - 这有点创造了一个无限循环。
我把它从无限循环中取出来摆脱它。
答案 2 :(得分:0)
在MainActivity.onResume()中,您尝试启动新的MainActivity。
@Override
protected void onResume() {
super.onResume();
Intent refresh =new Intent(this, MainActivity.class);
startActivity(refresh);
}
这只是一个坏主意并且会给出一个无限循环,其中MainActivity不断启动新的MainActivity。
只需删除你的onResume()并刷新当前活动的视图,而不是创建新活动。