2016-11-10 6 views
1

begann ich eine DialogFragment von ACTIVITYA, wenn ich auf dem weißen Hintergrund von DailogFragment klicken, wo es keine Elemente, die Click-Ereignis auf dem ACTIVITYA geschieht, die im Hintergrund istDialogFragment ermöglicht Klickaktivität hinter

public class FilterDialog extends DialogFragment{ 

    private static final String TAG = "FilterDialog"; 
    Calendar myCalendar = Calendar.getInstance(); 
    private String stringDate; 


    DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { 

     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, 
          int dayOfMonth) { 
      monthOfYear++; 
      stringDate = dayOfMonth+"-"+ monthOfYear +"-"+year; 
     } 

    }; 

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

     View rootView = inflater.inflate(R.layout.dialog_filter, container, false); 

     Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); 
     toolbar.setTitle("Filter"); 
     Button datePicker = (Button) rootView.findViewById(R.id.datePicker); 
     View.OnClickListener datePickListener = new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if(v.getId() == R.id.datePicker){ 
        new DatePickerDialog(v.getContext(), date, 
            myCalendar.get(Calendar.YEAR), 
            myCalendar.get(Calendar.MONTH), 
            myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 

       } 
      } 
     }; 
     datePicker.setOnClickListener(datePickListener); 

     ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); 

     ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); 
     if (actionBar != null) { 
      actionBar.setDisplayHomeAsUpEnabled(true); 
      actionBar.setHomeButtonEnabled(true); 
      actionBar.setHomeAsUpIndicator(android.R.drawable.ic_menu_close_clear_cancel); 
     } 
     return rootView; 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     return dialog; 
    } 

    @Override 
    public void onStart() 
    { 
     super.onStart(); 
     final AlertDialog d = (AlertDialog)getDialog(); 
     if(d != null) 
     { 
      Button positiveButton = (Button) d.getButton(Dialog.BUTTON_POSITIVE); 
      positiveButton.setOnClickListener(new View.OnClickListener() 
      { 
       @Override 
       public void onClick(View v) 
       { 
        Boolean wantToCloseDialog = false; 

        if(wantToCloseDialog) 
         d.dismiss(); 

       } 
      }); 
     } 
    } 
} 

Diese mein DialogFragment ist, i

FragmentManager fragmentManager = getSupportFragmentManager(); 
FilterDialog newFragment = new FilterDialog(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
transaction.replace(android.R.id.content, newFragment).addToBackStack(null).commit(); 
verwendet zeigen dialogfragment

screenshot

Wie in der obigen scre gezeigt enshot, Wenn ich auf eine der markierten Farben klicke, passiert der Klick auf ActivityA im Hintergrund und ist nicht sichtbar. Kann mir jemand helfen, das zu deaktivieren?

Antwort

5

Machen Sie android:clickable=true für das Root-Layout dieses Dialogfelds.

+0

Ty so viel ..... –

-1

Sie eingestellt haben setCancelable(false); in onCreateView Methode, neben dem aufblasen Linie wie unten

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

     View rootView = inflater.inflate(R.layout.dialog_filter, container, false); 
     setCancelable(false); 
} 

Hoffe, das ist hilfreich :)

+0

dies nicht funktioniert –