我有一个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);
}
}
问题已被编辑
答案 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
你已经完成了!