0

我有一个ViewPager向用户显示 2 个片段。

  • 片段 1 包含一个带有 的按钮,用于向片段 2onClickListener中的内容添加条目ListView。新条目是由随机数生成器生成的数字。

  • 片段 2 包含 a ,其中包含ListView一些随机数。

我找不到从片段 1 中的按钮侦听器刷新片段 2 中列表的方法。我该怎么做?

我努力了:

  1. onResume在片段 2中初始化和设置列表适配器。
  2. myViewPager.notifyDataSetChanged从片段 1调用。

以上方法都没有奏效。有任何想法吗?


编辑:这是我的代码:

layout_main.xml

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

layout_frag_one.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <Button
        android:id="@+id/main_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Add Number" />
</RelativeLayout>

layout_frag_two

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>
</LinearLayout>

主要活动

public class SlideActivity extends FragmentActivity {
    private final static int FRAGMENT_NUMBER = 2;
    private ViewPager pager;

    protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_mainpager);
    pager = (ViewPager) findViewById(R.id.mainpager);
    pager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
    super.onCreate(savedInstanceState);
    }

    private class ViewPagerAdapter extends FragmentStatePagerAdapter {

        public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
        }

        public Fragment getItem(int index) {
            switch(index){
            case 0:
                 return new Fragment1();
            case 1:
                 return new Fragment2();
             default:
                 return new Fragment1();
            }
        }

        public int getCount() {
            return FRAGMENT_NUMBER;
        }
    }
}
4

1 回答 1

0

您可能需要实现其中的一些才能使其正常工作:

http://developer.android.com/training/basics/fragments/communicating.html

还有一些在这里阅读:

http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity

于 2013-11-08T01:56:04.827 回答