2012-08-28 48 views
1

DialogButton雖然我有它.dismiss()不解僱連。我的代碼:的Android DialogBu​​tton不解僱

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.iabout); 
    // custom dialog 
    final Dialog dialog = new Dialog(context); 
    dialog.setContentView(R.layout.iabout); 


    dialogButton = (Button) dialog.findViewById(R.id.btAboutOK); 
    // if button is clicked, close the custom dialog 
    dialogButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
} 

感謝任何幫助。

+3

你在哪裏調用dialog.show()方法? – grattmandu03

回答

2

請不要使用對話框的被解僱你的對話框,請使用DialogFragments。這更容易維護。 onCreateDialog(Bdl bundle)(對於預蜂窩支持庫添加到您的項目)

然後在您的DialogFragment類使用AlertDialog.Builder像這樣:

public class MyDialogFragment extends DialogFragment { 


@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    return new AlertDialog.Builder(getActivity()) 
      .setIcon(R.drawable.alert_dialog_icon) 
      .setTitle(R.string.alert_dialog_custom_title) 
      .setPositiveButton(android.R.string.ok, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         ((MyActivity)getActivity()).doPositiveClick(); 
        } 
       } 
      ) 
      .setNegativeButton(android.R.string.cancel, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         ((MyActivity)getActivity()).doNegativeClick(); 
        } 
       } 
      ) 
      .create(); 
} 

} 

這些例子可以發現here.

如果您打算使用舊對話框的方式,請至少使用dialog builder

然後根據上面的示例,您可以設置回調方法。

如果你想要做自定義對話框與自定義佈局,使用DialogFragment S,那麼你就可以正確地控制對話框生命週期,那麼你的自定義按鈕可以只調用dismiss()DialogFragment

閱讀例子提到here.

乾杯, 克里斯

0

根據此回答https://stackoverflow.com/a/3378859/975959,問題可能是因爲您將對話放置在onCreate()方法中。

雖然這個答案是關於與取向的變化的問題,但它可能是GOOT考慮他們的答案: 移動對話框落實到

@Override 
onPostCreate() 

方法。 希望這有助於。你

還可以添加setCancelable(true)允許使用後退按鈕