Android 紧急情况:更新viewpager中有两个片段的1个片段
我在主要活动中有一个viewpager。在viewpager中,我有两个片段A和B。片段A有一个新闻主题的列表视图。当你点击listview上的每个项目时,新闻的内容会显示在片段B上。 我的想法是,每当单击每个项目时,都在listview适配器中设置CurrentItem()。但我发现它不起作用。片段B不在片段A的listview上显示第二条新闻的内容。这意味着viewpager不更新片段B的内容 有人能告诉我如何解决这个问题吗Android 紧急情况:更新viewpager中有两个片段的1个片段,android,listview,android-fragments,android-viewpager,Android,Listview,Android Fragments,Android Viewpager,我在主要活动中有一个viewpager。在viewpager中,我有两个片段A和B。片段A有一个新闻主题的列表视图。当你点击listview上的每个项目时,新闻的内容会显示在片段B上。 我的想法是,每当单击每个项目时,都在listview适配器中设置CurrentItem()。但我发现它不起作用。片段B不在片段A的listview上显示第二条新闻的内容。这意味着viewpager不更新片段B的内容 有人能告诉我如何解决这个问题吗 提前谢谢 您可以使用外部接口在活动和片段之间传递数据。您不应该在片
提前谢谢 您可以使用外部接口在活动和片段之间传递数据。您不应该在片段之间直接对话,而是使用活动作为代理。示例如下: MainActivity.java
public class MainActivity extends AppCompatActivity implements InteractionInterface {
private ViewPager viewPager;
private MyAdapter adapter;
@Override
public void onCreate(Bundle instance) {
super.onCreate(instance);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
adapter = new MyAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
private class MyAdapter extends FragmentStatePagerAdapter {
private FragmentA fragmentA;
private FragmentB fragmentB;
public MyAdapter(FragmentManager fm) {
super(fm);
fragmentA = new FragmentA();
fragmentB = new FragmentB();
}
@Override
public Fragment getItem(int position) {
return position == 0 ? fragmentA : fragmentB;
}
@Override
public int getCount() {
return 2;
}
}
@Override
public void onClick() {
// this comes from InteractionInterface
if(adapter.fragmentB.isAdded()) {
adapter.fragmentB.doSomething("yeah!!");
}
}
}
FragmentA.java
public class FragmentA extends Fragment {
private Button button;
private InteractionInterface interface = null;
@Override
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_a, container, false);
button.setOnClickListener(new OnClickListener() {
public void onClick(final View v) {
if(interface != null) {
// you can modify this interface to pass some data
interface.onClick();
}
}
});
return rootView;
}
public void onAttach(Activity a) {
super.onAttach(a);
if (a instanceof InteractionInterface) {
interface = (InteractionInterface) a;
}
}
public void onDetach() {
super.onDetach();
interface = null;
}
}
FragmentB.java
public class FragmentB extends Fragment {
...
public void doSomething(String something) {
// do stuff here
}
}
InteractionInterface.java
public interface InteractionInterface {
void onClick();
}
你能发布一些代码吗?你有没有办法通过触摸片段A中的一个项目来更新片段B?我在谷歌上搜索了很多,但都没用。请帮我看看我的答案,它比好用得多。老实说,非常感谢你。我对这些问题困惑了好几天,你让我很开心。祝你过得愉快。不客气:)如果你喜欢,请接受我的回答