Android : 按钮在toolbar中的onclick提示信息在另外两个tablayout中
Android : button in toolbar onclick prompt message in another two tablayout
我有一个问题,是否可以在单击工具栏中的按钮时在另外两个tablayout 片段中提示消息。例如,当我单击底部工具栏中的按钮测试时,另外两个片段 textview 将提示文本。
主要活动
public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener{
private TabLayout tabLayout;
private ViewPager viewPager;
int ans =3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
BasePagerAdapter adapter = new BasePagerAdapter(getSupportFragmentManager());
Tab1 tab1 = new Tab1();
Tab2 tab2 = new Tab2();
adapter.addFragment(tab1, "1");
adapter.addFragment(tab2, "2");
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(adapter);
tabLayout.setOnTabSelectedListener(this);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
public class BasePagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public BasePagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void removeFragment(int position) {
mFragmentTitleList.remove(position);
mFragmentList.remove(position);
notifyDataSetChanged();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
选项卡 1
public class Tab1 extends Fragment {
EditText editext,editext2,editext3;
Button test;
DBController db;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View h = inflater.inflate(R.layout.tab1, container, false);
editext =(EditText)h.findViewById(R.id.editText);
editext2 =(EditText)h.findViewById(R.id.editText2);
editext3 =(EditText)h.findViewById(R.id.editText3);
return h;
}
选项卡 2
public class Tab2 extends Fragment {
TextView textView2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View h = inflater.inflate(R.layout.tab2, container, false);
textView2 = (TextView) h.findViewById(R.id.textView2);
return h;
}
i have a question, is it possible to make it , when onclick the button in toolbar and prompt the message in another two tablayout fragment
答案:是
怎么会这样?
嗯,使用 interface
是一个解决方案。但我宁愿保持 类 松散耦合并使用 EventBus
,它允许您无缝地将数据作为事件传递给其他 类.
它遵循组件之间的 publish-subscribe-style 通信,而不需要组件显式地相互注册(因此相互了解)。它专为使用显式注册取代传统的 Java in-process 事件分发而设计。
要查看用法,请参阅此
我有一个问题,是否可以在单击工具栏中的按钮时在另外两个tablayout 片段中提示消息。例如,当我单击底部工具栏中的按钮测试时,另外两个片段 textview 将提示文本。
主要活动
public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener{
private TabLayout tabLayout;
private ViewPager viewPager;
int ans =3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
BasePagerAdapter adapter = new BasePagerAdapter(getSupportFragmentManager());
Tab1 tab1 = new Tab1();
Tab2 tab2 = new Tab2();
adapter.addFragment(tab1, "1");
adapter.addFragment(tab2, "2");
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(adapter);
tabLayout.setOnTabSelectedListener(this);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
public class BasePagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public BasePagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void removeFragment(int position) {
mFragmentTitleList.remove(position);
mFragmentList.remove(position);
notifyDataSetChanged();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
选项卡 1
public class Tab1 extends Fragment {
EditText editext,editext2,editext3;
Button test;
DBController db;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View h = inflater.inflate(R.layout.tab1, container, false);
editext =(EditText)h.findViewById(R.id.editText);
editext2 =(EditText)h.findViewById(R.id.editText2);
editext3 =(EditText)h.findViewById(R.id.editText3);
return h;
}
选项卡 2
public class Tab2 extends Fragment {
TextView textView2;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View h = inflater.inflate(R.layout.tab2, container, false);
textView2 = (TextView) h.findViewById(R.id.textView2);
return h;
}
i have a question, is it possible to make it , when onclick the button in toolbar and prompt the message in another two tablayout fragment
答案:是
怎么会这样?
嗯,使用 interface
是一个解决方案。但我宁愿保持 类 松散耦合并使用 EventBus
,它允许您无缝地将数据作为事件传递给其他 类.
它遵循组件之间的 publish-subscribe-style 通信,而不需要组件显式地相互注册(因此相互了解)。它专为使用显式注册取代传统的 Java in-process 事件分发而设计。
要查看用法,请参阅此