Иерархия активности моего приложения следующая: MainActivity> FragActivity> FragmentExp (включает фрагмент с 3 вкладками (Tab1
Tab2
Tab3
))
У меня есть представление ресайклера в MainActivity
и при нажатии другой список Я хочу от go до Tabs
с экстрастроками (я имею в виду какое-то строковое сообщение). И покажите тост на этих вкладках.
Я пробовал: я установил намерение с помощью extrastring от моего MainActivity
до FragActivity
вот так.
if (position==1){
Intent i = new Intent(MainActivity.this, FragActivity.class);
i.putExtra(MainActivity.ENGLISHPDF, "0");
startActivity(i);
}
и получил те строки прямо в Tab1
и Tab2
вот так:
In Tab1
code = getActivity().getIntent().getStringExtra(MainActivity.ENGLISHPDF);
if (this.code.equals("0")) {
Toast.makeText(getContext(), "hey its 1", Toast.LENGTH_SHORT).show();
}
In Tab2
code = getActivity().getIntent().getStringExtra(MainActivity.ENGLISHPDF);
if (this.code.equals("0")) {
Toast.makeText(getContext(), "hey its 2", Toast.LENGTH_SHORT).show();
}
Это мои коды:
MainActivity :
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, DataAdapter.OnNoteListener{
public static final String ENGLISHPDF = "english";
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
(...)
recyclerView = findViewById(R.id.add_header);
(...)
ArrayList<ListItem> items = new ArrayList<>();
items.add(new Item(R.drawable.green, "English", "1"));
DataAdapter adapter = new DataAdapter(items, this);
recyclerView.setAdapter(adapter);
}
@Override
public void onNoteClick(int position) {
if (position==0){
Intent i = new Intent(MainActivity.this, FragActivity.class);
i.putExtra(MainActivity.ENGLISHPDF, "0");
startActivity(i);
}
}
}
FragActivity :
public class FragActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frag);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,
new FragmentExplorem(), COLLAPSING_TOOLBAR_FRAGMENT_TAG).commit();
}
И наконец, в FragExp я установил tablayout и включил в него фрагмент с 3 вкладками. Это FragExp:
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_layout, container, false);
AppBarLayout appBarLayout = view.findViewById(R.id.tab_appbar_layout);
((CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams()).setBehavior(new AppBarLayoutBehavior());
tabLayout = view.findViewById(R.id.tabs);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
viewPager = view.findViewById(R.id.viewpager);
viewPager.setOffscreenPageLimit(tab_count);
toolbar = view.findViewById(R.id.toolbar);
setupToolbar();
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(0);
}
});
return view;
}
public class MyAdapter extends FragmentPagerAdapter {
private MyAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: return new Tab1();
case 1: return new Tab2();
case 2: return new Tab3();
}
return null;
}
@Override
public int getCount() {
return tab_count;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0 : {
return "First";
}
case 1 : {
return "Second";
}
case 2 : {
return "Third";
}
return null;
}
}