哪个片段开启了活动?

时间:2017-09-30 13:58:10

标签: android android-activity android-viewpager fragment android-optionsmenu

我有一个viewpager,它有4个片段,所有片段都有recyclerview。点击recyclerview,所有四个片段都打开相同的活动,即DemoActivity。我想在DemoActivity中显示不同的选项菜单,根据哪个部分点击了fragmnet的recyclerview。为什么我会知道哪个片段的Recyclerview被点击并在DemoActivity中显示适当的Oprtions菜单?

  public class CategoryAdapter extends FragmentPagerAdapter {
    private Context context;
    public CategoryAdapter(Context context,FragmentManager fm) {
        super(fm);
        this.context=context;
    }

    @Override
    public Fragment getItem(int position) {
        if(position==0){
            return new MyMoviesFragment();
        }
        else if(position==1){
            return new PopularFragment();
        }
        else if (position==2){
            return new UpComingFragment();
        }
        else{
            return new NowPlayingFragment();
        }

    }



    @Override
    public int getCount() {
        return 4;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        if(position==0){
            return context.getString(R.string.category_MyMovies);
        }
        else if(position==1){
            return context.getString(R.string.category_Popular);
        }

        else if(position==2){
            return context.getString(R.string.category_Upcoming);
        }
        else if(position==3){
            return context.getString(R.string.category_NowPlaying);
        }

        return super.getPageTitle(position);
    }
}

问题已被编辑

2 个答案:

答案 0 :(得分:0)

in fragment (u can put this code inside your recycler view action listener )
Intent intent = new Intent(getActivity(), DemoActivity.class);
intent.putExtra("KEY", "UR_FRAGMENT_NAME");
startActivity(intent);

in DemoActivity inside onCreate() method
Intent intent  = getIntent();
if(intent.hasExtra("KEY")) {
   if(intent.getStringExtra("KEY").equals("UR_FRAGMENT_NAME")) {
     // todo what u want.
   }
}

答案 1 :(得分:0)

如果你有一个ViewPager - 你可以使用一个位置选项。通过fragment的位置,并将位置条件放入DemoActivity.java

为此,您必须通过FragmentPagerAdpater的{​​{1}}方法传递位置,并将位置从getItem(int position)传递到Fragment

就像 -

Activity

现在使用@Override public Fragment getItem(int position) { Fragment mF; if (position == 0) { mF = new MyMoviesFragment(); } else if (position==1){ mF = new PopularFragment(); } else if (position==2){ mF = new UpComingFragment(); } else { mF = new NowPlayingFragment(); } Bundle b = new Bundle(); b.putInt("KEY", position); // You are passing position to fragment mF.setArguments(b); return mF; } 方法获取fragment中的位置。例如,在getArguments() -

MyMoviesFragment

您已在Bundle b = getArguements(); int position = b.getInt("KEY"); 中找到自己的位置,现在将其传递到Fragment项目内的Activity -

recyclerview

你已经完成了!