Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过按钮重新创建片段视图_Android_Fragment_Reload_Android Fragmentactivity_Recreate - Fatal编程技术网

Android 通过按钮重新创建片段视图

Android 通过按钮重新创建片段视图,android,fragment,reload,android-fragmentactivity,recreate,Android,Fragment,Reload,Android Fragmentactivity,Recreate,我有一个FragmentActivity,它使用ViewPager显示正确的片段。我在ViewPager中添加了一个片段StatePagerAdapter。如果我在片段上按下一个按钮,应该重新创建它(应该再次调用onCreateView)。这些片段是文章,如果用户处于脱机状态,我将向他显示“请检查您的网络连接”和一个要重新加载的按钮。按钮在FragmentActivity中调用了一个方法,但我不知道如何实现它。也许我可以销毁并重新创建当前片段 这里是碎片活动的重要部分: private Arra

我有一个FragmentActivity,它使用ViewPager显示正确的片段。我在ViewPager中添加了一个片段StatePagerAdapter。如果我在片段上按下一个按钮,应该重新创建它(应该再次调用onCreateView)。这些片段是文章,如果用户处于脱机状态,我将向他显示“请检查您的网络连接”和一个要重新加载的按钮。按钮在FragmentActivity中调用了一个方法,但我不知道如何实现它。也许我可以销毁并重新创建当前片段

这里是碎片活动的重要部分:

private ArrayList<Fragment> fragments;
protected void onCreate(Bundle savedInstanceState)
{
    context = this;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_article_page_slider);
    ...
    pages = datahandler.getCount(...);
    viewPager = (ViewPager) findViewById(R.id.articlePager);
    PagerAdapter pagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
    viewPager.setAdapter(pagerAdapter);
    viewPager.setCurrentItem(startPosition);
    fragments = new ArrayList<Fragment>(pages);
}
public void reloadData(View v)
{
    // TODO
    ((ArticlePageFragment)fragments.get(viewPager.getCurrentItem())).refresh();
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter
{
    public ScreenSlidePagerAdapter(FragmentManager fm)
    {
        super(fm);
    }
    @Override
    public Fragment getItem(int position)
    {
        Fragment fragment = new ArticlePageFragment();
        Bundle args = new Bundle();
        ...
        fragment.setArguments(args);
        fragments.add(position, fragment);
        return fragment;
    }
    public int getCount()
    {
        return pages;
    }
}
和fragment_article_page.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <WebView
        android:id="@+id/articleFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <Button
        android:id="@+id/btn_reload_article_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="reloadData"
        android:text="@string/btn_txt_reload_data"
        android:visibility="gone" />

</RelativeLayout>

编辑 在FragmentActivity中添加了一个
private ArrayList fragments
,并在一个额外的
refresh
方法中传输用于操作视图的代码,向前看。如果我只单击第一个或第二个片段(索引0和1),所有这些都可以正常工作。否则我会得到一个
索引outofboundsException
。如何初始化和填充ArrayList?

请参阅:()
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <WebView
        android:id="@+id/articleFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <Button
        android:id="@+id/btn_reload_article_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="reloadData"
        android:text="@string/btn_txt_reload_data"
        android:visibility="gone" />

</RelativeLayout>