刷新活动/“执行未恢复活动的停止”错误

时间:2014-09-16 11:03:43

标签: android android-alertdialog

我正在尝试通过打开GPS设置的alertdialog启用GPS后刷新我的活动。 我实现了onResume函数,但结果我在我的logcat上得到了这个:

performing stop of activity that is not resumed(...)

我看过这个post,但我无法弄清楚我的代码(或我的onResume功能)有什么问题,以及如何在从GPS设置回来后刷新我的活动。

你可以帮帮我吗? 这是我的MainActivity.java

3 个答案:

答案 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()并刷新当前活动的视图,而不是创建新活动。