我正在学习Java,我希望将我的课程变成一个可观察的课程.
但是我已经扩展了另一个类.
我该怎么办?
我有一个 Activity 和两个 Fragment,其中tablayout包含viewpager. 现在我可以通过实现谷歌的指南回调接口从片段到活动进行通信。但是我怎样才能以另一种方式从 Activity 到 Fragment进行通信呢?如果活动中发生了一些事情(外部事件),我想更新片段。我设法获得了 Frag1 片段
MyFragmentPagerAdapter a = (MyFragmentPagerAdapter) viewPager.getAdapter();
Frag1 frag = (Frag1) a.getItem(0);
Run Code Online (Sandbox Code Playgroud)
但是当我在 frag 上调用公共方法时,我得到一个 IllegalStateException: Fragment not Attached to Activity 可能是因为 getItem(0) 返回 Frag1 的新实例并且尚未附加...有没有人可以为此提供干净的解决方案整个 Viewpager -> Activity 到 Fragment 通信?
一些代码给你:
在活动中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
if (viewPager != null) {
viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager()));
}
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
if (tabLayout != null) {
tabLayout.setupWithViewPager(viewPager); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-activity android-tablayout