2016-06-22 3 views
-1

2つのフラグメントが、(イベントリスナーを介して)アクティビティにインテントを渡すことがあります。アクティビティは、これらの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値を送信し、あなたの活動にご確認できます。 .ORあなたが

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

を使用してフラグメントを得ることができるなぜあなたはテント自体

を通じていくつかのパラメータを渡すことはありません。あなたの活動にセカンドFragment-ための最初のfragment-

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

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

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

し、次いでちょうどif..elseを使用して確認してください。

関連する問題