2016-09-30 3 views
1

내 postReviewFragment의 RatingBar 등급 수신기 이벤트에 표시 할 사용자 정의 DialogFragment를 구현했습니다. 대화 상자가 닫 혔을 때 내 RatingBar 등급을 다시 0으로 설정하고 싶습니다. 사용자.DialogFragment 청취 이벤트를 수신하는 방법

그래서 이러한 스레드 건너 한에 검색하지만 솔루션은 나를 위해 작동하지 않습니다

DialogFragment Close Event

Can't use onDismiss() when using custom dialogs

DialogFragment and onDismiss

나는 시도했다 지금까지 위 스레드를 사용 :

구현 DialogInterface.OnDismissListener

@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 해제 할 때까지 발생하지 않습니다 n은 postReviewFragment와 나는 onDismiss() 방법 오버라이드 (override)하는했습니다 DialogFragment에서 또한 최우선 onDismiss() 방법

@Override 
    public void onDismiss(final DialogInterface dialog) { 

     userRating.setRating(0); 

    } 

, 나는 무엇이다 잘못하고있는거야?

답변

0

OK, 나는 그것을 알아 내기 위해 관리 : 모든

  1. 먼저 당신이 DialogInterface.OnDismissListener을 구현 onDismiss DialogFragment하고 대화 상자를 보여주는 조각 모두() 메소드를 오버라이드 (override)했는지 확인합니다. 당신이 올라올 때

  2. 그런 다음 DialogFragment 내가 DialogFraments의 onDismiss() 방법에

    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. 내가 0으로 등급을 설정 DialogFragment에 번들을 통해 평가를 통과하고에 추가 여기에, 목표 조각을 설정 extra를 설정하고 dialogFragment의 ratingbar를 사용자가 선택한 값으로 설정합니다.

    Intent i = new Intent() 
         .putExtra("rating1", rating); 
    getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i); 
    
  4. 그러면 I 기각 0에 단편의 값 ratingbar 설정 값을 판독하는 방법을 대체 onActivityResult().

이 방법이 최선의 방법은 아니지만 작동하지만,이 방법보다 나은 것을 찾으면 대답을 업데이트 할 것입니다. 제 설명이 명확하지 않은 경우 사과하십시오. 자세한 설명은 스레드 아래를 확인하십시오.

참고 자료 : How to send data from DialogFragment to a Fragment?

0

시도해보십시오.

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
        public void onDismiss(DialogInterface dialog) { 
         MainActivity.this.finish(); 
        } 
       }); 
관련 문제