2016-11-10 1 views
1

Я начал DialogFragment от ActivityA, когда я нажимаю на белом фоне DailogFragment, где нет элементов, событие щелчка происходит на ActivityA, который находится в фоновом режимеDialogFragment позволяет щелкающая деятельность за

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(); 

       } 
      }); 
     } 
    } 
} 

Этого мой dialogFragment, чтобы показать dialogfragment я использовал

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(); 

screenshot

Как показано в приведенном выше Scre enshot, Если я нажму на любой выделенный цвет, щелкните на ActivityA, который находится в фоновом режиме и не отображается. Может ли кто-нибудь помочь мне отключить это.

ответ

5

Сделайте android:clickable=true для корневого расположения этого диалогового окна.

+0

Ты так много ..... –

-1

Вы установили setCancelable(false); в onCreateView методе, рядом с раздувать линии, как показано ниже

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

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

Надежда это полезно :)

+0

Это делать не работает –