2016-06-22 4 views
-1

둘 다 (이벤트 리스너를 통해) 활동에 의도를 전달하는 2 개의 조각이 있습니다. 액티비티는이 두 조각 중 어떤 것이 의도를 통과했는지 어떻게 알 수 있습니까? getCallingActivity()이라는 메서드가 있습니다. 조각에 해당하는 메서드가 필요합니다. 활동이라고하는 조각을 결정하는 방법

은 내가 onAttachFragment() 방법으로 활동을 호출하는 조각 결정하기 위해 시도,하지만 작동하지 않습니다

public class DetailsActivity extends Activity { 
    static final String POSITION = "position"; 
    private Movie movie; 
    private int position; 
    private static final String TAG = "app"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_details); 
    } 

    @Override 
    public void onAttachFragment(Fragment fragment) { 
     super.onAttachFragment(fragment); 
     Log.v(TAG, "fragment_src"); 
     position = (int) getIntent().getExtras().get(POSITION); 
     if (fragment instanceof PopularFragment) { 
      movie = PopularFragment.movieList.get(position); 
      setData(); 
     } else if (fragment instanceof TopRatedFragment) { 
      movie = TopRatedFragment.movieList.get(position); 
      setData(); 
     } 
    } 

    public void setData() { 
     TextView original_title = (TextView) findViewById(R.id.original_title); 
     original_title.setText(movie.getOriginal_title()); 
     ... 
    } 
} 

답변

1

당신은 두 조각을위한 목적으로 다른 INT 값을 보내고 활동에서 확인할 수 있습니다. 당신이 의도 자체

을 통해 몇 가지 매개 변수를 전달하지 왜 불러야 당신은

Fragment fragment = getFragmentManager().findFragmentByTag("yourtag"); 
0

를 사용하여 조각을 얻을 수 먼저 fragment- 당신의 활동

String fragName=getIntent().getStringExtra("fragName"); 

에서

Intent intent=new Intent(getActivity(),DetailsActivity.class); 
intent.putExtra("fragName","TopRatedFragment"); 
startActivity(intent); 

둘째 Fragment-

를 들어

Intent intent=new Intent(getActivity(),DetailsActivity.class); 
intent.putExtra("fragName","PopularFragment"); 
startActivity(intent); 

그리고 그냥에서는 if..else를 사용하여 확인한다.