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 事件分发而设计。

要查看用法,请参阅此