2017-05-17 2 views
1

Ich benutze extends DialogFragmentWie Dialogfragment deaktivieren klicken Sie außerhalb auf Android?

ich außer Dialog wollen, deaktivieren Sie auf Android klicken.

Ich versuche setCanceledOnTouchOutside(true), aber es funktioniert nicht.

und bitte überprüfen Sie meine Quelle.

public class QuestDialog extends DialogFragment { 
    private String mainMessage = ""; 
    private View.OnClickListener positiveListener = null; 
    private View.OnClickListener negativeListener = null; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.main_dialog, container, false); 

    TextView textView = (TextView) view.findViewById(R.id.main_msg); 
    textView.setText(mainMessage); 

    Button positiveBtn = (Button) view.findViewById(R.id.dialog_positive_btn); 
    Button negativeBtn = (Button) view.findViewById(R.id.dialog_negative_btn); 

    positiveBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dismiss(); 
      if (positiveListener != null) { 
       positiveListener.onClick(view); 
      } 
     } 
    }); 
    negativeBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dismiss(); 

      if (negativeListener != null) [ 
       negativeListener.onClick(view); 
      } 
     } 
    }); 
    return view; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

    Dialog dialog = super.onCreateDialog(savedInstanceState); 
    dialog.setCanceledOnTouchOutside(true); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); 
    dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | 
      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); 
    return dialog; 
} 
public void setMessage(final String msg) { 
    mainMessage = new String(msg); 
} 

public void setPositiveButton(View.OnClickListener listener) { 
    positiveListener = listener; 
} 

dieses eine.

Wie deaktiviert man das Klicken von Dialogfragment außerhalb von Android?

danke.

+0

hinzufügen dialog.setCancelable (false); –

+0

setCanceledOnTouchOutside (falsch); zum Deaktivieren von außen berühren Dialog Abbrechen – RameshJaga

+0

Bitte stellen Sie Ihre Frage deutlicher. so dass es einfach für uns ist, richtig zu antworten – RameshJaga

Antwort

1

Für Ihre Anforderung sollten Sie setCancelable(true) verwenden.

Dialog dialog = super.onCreateDialog(savedInstanceState); 
dialog.setCancelable(true); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
+0

nicht funktionieren, ich möchte außer Dialog, außerhalb klicken deaktivieren :) – chohyunwook

0

Bitte verwenden Sie dialog.setCancelable(boolean) Methode. Danke

+0

Ich versuche 'dialog.setCancelable (false)' aber nicht funktionieren. – chohyunwook

+0

@ Chohyunwook sollten Sie versuchen, dialog.setCancelable (True) –

0

Setzen Sie .setCancelable (false) in Ihrem DialogFragment vor der Show.

QuestDialog questDialog = new QuestDialog(); 
questDialog.setCancelable(false); 
questDialog.show(getSupportFragmentManager(),"Tag"); 
0

Plain setCancelable (false) (. Ohne Dialog) in onCreateView für mich gearbeitet

Verwandte Themen