Fragment Switch Android

时间:2015-08-07 14:39:58

标签: android listview android-fragments android-asynctask

我有片段切换问题。在我的应用程序中,用户完成一个任务来完成3个片段。具体来说,我有这样的结构:

[F1] - > [F2] - > [F3]

我正在使用导航抽屉,当用户点击抽屉中的项目时,F1会被实例化。 但是,当数据插入完成时(这意味着它在F3中),用户必须单击一个按钮(它将启动AsyncTask,因为数据必须存储在数据库中),将其重定向到F1并且必须填充一个listView包含它包含在上一个片段(F2和F3)中的数据。 现在问题是:如何在F3和F1之间移动并填充F1列表?我知道这个操作必须在" onPostExecute" AsyncTask的方法,但我不明白如何恢复listView并填充它。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用回调将一个标志从F3传递到F1。用逗号分隔每个值,这样你就有了一个CSV字符串。

String [] seperatedList = passedStr.split(“,”);

从此字符串构建数组,然后将此数组设置为适配器数据并调用

listview.setadapter(适配器);

对不起这些回复来得晚,我一直很忙。这是在两者之间传递字符串的一种方法。

    String csv = "value0,value1,value2,value";
    Bundle bundle = new Bundle();
    bundle.putString("YOUR_KEY", csv);

然后在你的片段onCreate call中执行你的事务并提交等等:

   String csv = getArguments().getString("YOUR_KEY");
   String [] seperatedValues = csv.split(",");

这是一种方式,它可以帮助你,如果你想要更多的信息,让我知道生病尽力。

答案 1 :(得分:0)

您可以使用以下方式解决此问题: 您正在使用NavigationDrawer。所以你有一个Activity,你的活动布局有这样的FrameLayout

<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

@+id/frame_container中,您正在填充像F1,F2 ...... Fn这样的碎片。 您可以使用以下方式在frameContainer中填充片段:

Fragment fragment=new F1();
FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

在onCreateView()之后的片段F1中,您可以检查数据库中可用的数据,这些数据必须在ListView中显示。如果可用数据,则使用适配器在listView中显示它。 现在,当您在片段F3中,在成功保存数据库数据后,您可以使用以前的代码实例化片段F1。 导航抽屉Example is Here。 使用ListView适配器Example Here。 谢谢,对不起英语不好。