2

GPSを有効にするためにアプリにアラートボックスを表示しています。アプリは最初は正常に動作しますが、2回目は正常に動作し、次に3回目は正常に動作し、4回目はクラッシュします。クラッシュすると、「アクティビティは実行されていますか?」というエラーが表示されます。ハンドラーと個別のUIスレッドで試しましたが、成功しませんでした。私はこれを試しています。

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  ExceptionHandler.register(this, WebServiceIface.BASE_URL
    + "/exception/log");
  instanceState = savedInstanceState;
  appStatus = AppStatus.getInstance(this);
  appStatus.mFromQrCode = false;
  mhandler = new Handler();
  appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
  isFromLogin = getIntent().getBooleanExtra("LOGIN_FLAG", false);
  isOnPause = false;
  listenForLocation();
  loginIfNeeded();
 }

 private void listenForLocation() {
  gps = GpsLocator.getGpsLocator(this);
  gps.listen();
 }

 @Override
 protected void onResume() {
  super.onResume();  
  gps.destroyGpsDialog();
  listenForLocation();
  compareTimes();
  isResuming = true;
  isOnPause = false;
  isFromRefresh=true;
 }

GpsLocatorアクティビティからアラートボックスを呼び出しています

public void createGpsDialog(){

      final AlertDialog.Builder builder = new AlertDialog.Builder(context);
         builder.setMessage("Yout GPS seems to be disabled, do you want to enable it?").setCancelable(true)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(final DialogInterface dialog, final int id) {
                 dialog.dismiss();
                    context.startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),6186);


                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(final DialogInterface dialog, final int id) {
                     dialog.dismiss();
                }
            });
         alert = builder.create();
         alert.show();
    }

2回目だけクラッシュするのはとても不思議です

編集..

 private GpsLocator(CheckinNativeActivity context) {
        this.context = context;
        this.observers = new ArrayList<GpsFragment>();
        this.removalList = new ArrayList<GpsFragment>();
    }

    public static GpsLocator getGpsLocator(CheckinNativeActivity cxt) {
        if (ref == null)
            ref = new GpsLocator(cxt);
        return ref;
    }
4

2 に答える 2

1

いずれにせよ、コンテキストが渡されたかどうかを確認します

于 2012-06-15T12:03:26.540 に答える
0

ここでコンテキストの代わりに context.getApplicationContext() を試してください........

どこでもアプリケーションコンテキストを使用していますか?

于 2012-06-14T07:57:55.823 に答える