【问题标题】:Fragment Switch Android片段切换安卓
【发布时间】:2015-08-07 14:39:58
【问题描述】:

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

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

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

提前谢谢你。

【问题讨论】:

    标签: android listview android-fragments android-asynctask


    【解决方案1】:

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

    String [] seperatedList = passStr.split(",");

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

    listview.setadapter(适配器);

    抱歉这些回复来晚了,我一直很忙。这是在两者之间传递字符串的一种方式。

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

    然后在你的片段 onCreate 调用中进行事务和提交等:

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

    这是一种方法,如果您想了解更多信息,请告诉我,我会尽力而为。

    【讨论】:

    • 你能给我举个例子吗?
    • @Rick91 道歉,你还需要一个例子吗?
    • 如果可以的话,它对我很有用。
    • @Rick91 添加了一个示例。
    【解决方案2】:

    您可以使用以下方式解决此问题: 您正在使用 NavigationDrawer。所以你有一个活动,你的活动布局有一个像这样的 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() 之后的 Fragment F1 中,您可以检查数据库中是否存在必须显示在 ListView 中的数据。如果数据可用,则使用适配器将其显示在 listView 中。 现在,当您在 Fragment F3 中时,成功将数据保存到数据库后,您可以使用之前的代码实例化 Fragment F1。 导航抽屉Example is Here。 使用 ListView 适配器Example Here。 感谢和抱歉英语不好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      相关资源
      最近更新 更多