如何确定哪个片段称为活动

时间:2016-06-22 09:52:36

标签: android android-fragments android-intent

我有2个片段,它们都将意图传递给Activity(通过事件监听器)。活动如何知道这两个片段中的哪一个传递了意图?有一个名为getCallingActivity()的方法,我需要等效的片段。

我尝试使用onAttachFragment()方法确定哪个片段调用了Activity,但它不起作用:

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

2 个答案:

答案 0 :(得分:1)

你可以发送不同的int值,你的意图是片段和检查你的活动..或者你可以使用

获取你的片段
Fragment fragment = getFragmentManager().findFragmentByTag("yourtag"); 

答案 1 :(得分:0)

为什么不通过Intent本身传递一些参数

对于第一个片段 -

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进行检查。