2012-05-07 65 views
8

我試圖讓竊聽時有可能駁回了DialogFragment,經過一番搜索,我決定去與此實現:辭退DialogFragment的onClick

public class ErrorDialogFragment extends RoboDialogFragment { 

private static final String MESSAGE_ARG = "message"; 
private TextView text; 

public ErrorDialogFragment newInstance (String message){ 
    ErrorDialogFragment f = new ErrorDialogFragment(); 

     Bundle args = new Bundle(); 
     args.putString(MESSAGE_ARG, message); 
     f.setArguments(args); 

     return f; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
    View v = inflater.inflate(R.layout.error_dialog_fragment, container, false); 
    v.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      ErrorDialogFragment.this.dismiss(); 
     } 
    }); 

    text = (TextView) v.findViewById(R.id.error_dialog_text_textView); 
    text.setText(getArguments().getString(MESSAGE_ARG)); 
    return v; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setStyle(DialogFragment.STYLE_NO_TITLE, 0); 
} 

的警告對話框中可以有一個自定義消息,將被開除當點擊。

您認爲實現這個目標是一種更好的方法嗎?

謝謝。只要你想顯示警報

回答

14

您可以使用dialog.setCanceledOnTouchOutside(true);如果你在對話框外面觸摸,它將關閉對話框。或

試試本教程http://iserveandroid.blogspot.com/2010/11/how-to-dismiss-custom-dialog-based-on.html。 希望它有助於..!

+0

謝謝@Raghav即時使用setCanceledOnTouchOutside,但對於內部挖掘即時將繼續我的方法,鏈接指的是一個活動和DialogFragment :) – Goofyahead

+0

你能告訴我你在哪裏調用setCanceledOnTouchOutside方法嗎?因爲我需要對話框對象 – Sandra

+0

只是將它寫在你正在執行所有其他對話操作的地方。 – Rookie

2
final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle(title); 
     alertDialog.setMessage(msg); 
     alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int which) 
      { 
       alertDialog.dismiss(); 
      } 
     }); 
     alertDialog.setIcon(R.drawable.error_icon); 
     alertDialog.show(); 

只需使用此代碼,並且其確定onclick事件,對話框將解僱。

+0

感謝@ user1208720,但我的類從DialogFragment(故意不是AlertDialog)延伸,其當按鈕被點擊,而在上視圖中的任何地方點擊時沒有關閉。 問題是關於從android框架使用這個DialogFragment類,以及如何正確地發送這樣的事件:) – Goofyahead

0

我從一個Activity調用DialogFragment。點擊對話框中的按鈕後,我使用界面來調用活動中的方法。在這項活動,我執行這個:

// This is the code inside the activity that call the dialog 
Fragment fragment = getSupportFragmentManager().findFragmentByTag("MyDialog"); 
if(fragment != null) { 
    DialogFragment dialog = (DialogFragment) fragment; 
    dialog.dismiss(); 
}