2016-09-30 3 views
1

Я внедрил пользовательский диалог DialogFragment, который я показываю на мероприятии, отмеченном в рейтинге RatingBar в моем postReviewFragment, я хочу вернуть рейтинг RatingBar в 0, когда диалог отклоняется Пользователь.Как прослушать событие отклонения диалога DialogFragment

Поиск по SO Я пришел через эти нити, но решения, кажется, не работает для меня:

DialogFragment Close Event

Can't use onDismiss() when using custom dialogs

DialogFragment and onDismiss

То, что я пытался до сих пор с использованием вышеуказанных потоков:

Внедрение DialogInterface.OnDismissListener o п postReviewFragment и наиважнейшая onDismiss() метод

@Override 
    public void onDismiss(final DialogInterface dialog) { 

     userRating.setRating(0); 

    } 

Также в DialogFragment я overide метода onDismiss()

@Override 
public void onDismiss(DialogInterface dialog) { 
    super.onDismiss(dialog); 
    final Fragment parentFragment = getParentFragment(); 
    if (parentFragment instanceof DialogInterface.OnDismissListener) { 
     ((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog); 
    } 
} 

Но до сих пор метод onDismiss() не вспылить, когда dialogFragment уволен, о чем это я делать не так?

ответ

0

ОК, мне удалось понять это:

  1. Прежде всего убедитесь, что вы реализовали DialogInterface.OnDismissListener и перекрываться onDismiss() метод как на DialogFragment и фрагмент, показывающий диалог.

  2. Затем, когда вы показать DialogFragment установить целевой фрагмент, здесь я перехожу рейтинг через Bundle к DialogFragment

    android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager(); 
          PostReviewDialogFragment dialog = new PostReviewDialogFragment(); 
    
          // optionally pass arguments to the dialog fragment 
          Bundle args = new Bundle(); 
          args.putInt("usersRating", rating); 
          dialog.setArguments(args); 
    
          dialog.setTargetFragment(RestaurantReviewFragment.this,REVIEW_FRAGMENT); 
    
    
          dialog.show(fm, TAG); 
    
  3. На onDismiss() методе DialogFraments, я установить рейтинг 0 и добавить его в замысел дополнительно и установить рейтинговую панель в диалогеFragment для выбранного пользователем значения.

    Intent i = new Intent() 
         .putExtra("rating1", rating); 
    getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i); 
    
  4. Затем я переопределить onActivityResult() метод для чтения значений и установленное значение ratingbar на фрагменте в 0, когда отклонено.

Возможно, это не лучший подход, но он работает, я буду обновлять ответ, если найду что-нибудь лучше этого метода. Извините, если мои объяснения не очень ясны, посмотрите ниже нить для более подробного объяснения.

Литература: How to send data from DialogFragment to a Fragment?

0

Попробуйте это.

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
        public void onDismiss(DialogInterface dialog) { 
         MainActivity.this.finish(); 
        } 
       }); 
Смежные вопросы