2014-12-04 72 views
3

如何關閉我的自定義對話框?我得到.cancel().dismiss()一個錯誤,如果他們沒有本地.setpositive/Negative button無法關閉自定義按鈕對話框

試圖this答案外面解決,但仍然沒有工作..

這是我的對話框代碼:

public void showSettingsAlert(){ 

    final AlertDialog.Builder alertdialog = new AlertDialog.Builder(mcontext); 
    LayoutInflater inflater = LayoutInflater.from(mcontext); 
    final View customView = inflater.inflate(R.layout.custom_gps,null); 
    alertdialog.setView(customView); 
    alertdialog.setCancelable(true); 
    FlatButton bouton_ok = (FlatButton)customView.findViewById(R.id.custom_ok_button); 
    FlatButton bouton_quitter = (FlatButton)customView.findViewById(R.id.custom_cancel_button); 

    bouton_ok.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      mcontext.startActivity(intent); 


     } 
    }); 
    bouton_quitter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     //to close the whole application : 
      finish(); 
      System.exit(0); 
     } 
    }); 
    alertdialog.show(); 
} 

在我主機活動,這是我如何檢查gps是否啓用:

protected void onResume() { 
    super.onResume(); 
    gps = new GPSTracker(MainActivity.this); 
    // check if GPS enabled 
    if(gps.canGetlocation()){ 
     //stuff... 
    }else{ 
     gps.showSettingsAlert(); 
    } 
} 

回答

5

AlertDial og.Builder用於構建警報對話框。之後,create()方法返回一個AlertDialog對象,該對象允許您調用dismiss()。

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

LayoutInflater inflater = getLayoutInflater(); 
View dialogView = inflater.inflate(R.layout.brush_opts_dialog,null); 
builder.setView(dialogView); 

closeBtn = (Button)dialogView.findViewById(R.id.close_btn); 

final AlertDialog dialog = builder.create(); 

closeBtn .setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    dialog.dismiss(); 
} 
}); 

dialog.show(); 
+0

我仍然無法解除對話框'最後AlertDialog dialog = alertdialog.create(); bouton_ok.setOnClickListener(新View.OnClickListener(){ @Override 公共無效的onClick(視圖v){ 意圖意圖=新意圖(Settings.ACTION_LOCATION_SOURCE_SETTINGS); mcontext.startActivity(意向); dialog.cancel() ; } });' – RidRoid 2014-12-05 08:53:43

+0

它適用於我。什麼是錯誤? – 2014-12-05 08:58:53

+0

none:/對話框沒有關閉..但是當我放回本機setpositivebutton時,對話框關閉後,我點擊「設置」按鈕。我認爲這是因爲setpositivebutton具有'新的DialogInterface.OnClickListener()'。在我的自定義按鈕上,我有'新的View.OnClickListener()'。你認爲法魯克怎麼樣? – RidRoid 2014-12-05 09:26:31