2012-12-23 80 views
2

我有一個對話框,提示用戶如果未啓用gps位置。打開系統位置設置後,android對話框不會關閉

打開設置後,用戶啓用gps,並從位置設置屏幕按下後退按鈕,他們回到應用程序,但對話框仍然可見。

這裏是點擊按鈕的代碼。

// On pressing Settings button 
    alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int which) { 
      Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      mContext.startActivity(intent); 
      dialog.dismiss(); 
     } 

    }); 

我的問題是爲什麼dialog.dismiss()不關閉對話框,我也試過dialog.cancel()具有相同的結果。打開設置屏幕後,我應該做些什麼?

感謝,

回答

2

我有完全的代碼在我Activity

private void showLocationDisabledInfo() { 
    final Context c = this; 
    AlertDialog.Builder builder = new AlertDialog.Builder(c); 
    builder.setMessage("TEST"); 
    builder.setPositiveButton("OK", new OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      c.startActivity(intent); 
     } 
    }); 
    builder.setNeutralButton(R.string.cancel, null); 
    builder.create().show(); 
} 

和它自動關閉對話框,不管我點擊哪個按鈕。它來自我的應用程序,並且在具有API 810以及運行API 17的仿真器的設備上進行了測試。我們的代碼之間唯一的區別(可能)是mContext的值。請提供負責設置對話框的整個代碼以及您所看到的描述行爲的環境。

+0

謝謝。是的,我從Web教程中借用了一些代碼,並且像上面這樣設置了上下文:private final Context mContext;然後再設置幾行。 刪除'最終'解決了這個問題。 我是新來的java,這是如何工作的?如果它已經被定義爲最終的,我會期望設置的原因和錯誤? – Rob

+0

是的,差不多。最終字段必須在聲明或類構造函數中設置。在其他地方設置它們或重新設置它們會導致編譯時錯誤。最終的局部變量必須在聲明中設置,並且不能重新設置。但要小心 - 如果有人聲明'mContext'爲'final',也許他出於某種原因做了這件事;) – andr

相關問題