当前位置: 首页 > 知识库问答 >
问题:

如何使用Android碎片管理器传递变量[重复]

阎丰
2023-03-14

我有以下简单的代码在内容框架中从一个片段切换到另一个片段。有没有简单的方法在下面的代码中传递变量

FragmentManager fm = getActivity().getFragmentManager();

fm.beginTransaction().replace(R.id.content_frame, new TransactionDetailsFragment()).commit();

共有3个答案

越心水
2023-03-14

或者您可以使用newInstance方法——在片段类中创建一个方法,如下所示:

 public static TransactionDetailsFragment newInstance(String param) {
    TransactionDetailsFragment frag = new TransactionDetailsFragment();
    Bundle bund = new Bundle();
    bund.putString("paramkey", param); // you use key to later grab the value
    frag.setArguments(bund);
    return frag;
}

因此,要创建您的片段,您需要:

TransactionDetailsFragment.newInstance("PASSING VALUE");

(这是用来代替您的< code > new TransactionDetailsFragment())

然后例如在同一个片段的onCreate/onCreateView中,您会得到如下值:

String value = getArguments().getString("paramkey");
袁何平
2023-03-14

为< code > TransactionDetailsFragment 创建一个参数化的构造函数怎么样?

fm.beginTransaction().replace(R.id.content_frame, new TransactionDetailsFragment(YOUR_PARAMS)).commit();

当你创建新的 TransactionDetailsFragment(YOUR_PARAMS) 作为 FragmentTransaction 的参数时,我认为使用构造函数是一个不错的选择。

西门品
2023-03-14

您可以使用捆绑包:

FragmentManager fm = getActivity().getFragmentManager();
Bundle arguments = new Bundle();
arguments.putInt("VALUE1", 0);
arguments.putInt("VALUE2", 100);

MyFragment myFragment = new Fragment();
fragment.setArguments(arguments);

fm.beginTransaction().replace(R.id.content_frame, myFragment).commit();

然后,您检索如下:

public class MyFragment extends Fragment {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle = this.getArguments();
        if (bundle != null) {
            int value1 = bundle.getInt("VALUE1", -1);
            int value2 = bundle.getInt("VALUE2", -1);
        }
    }
}
 类似资料:
  • 我正在使用 Kotlin 进行开发。当我到达官方Android教程的片段部分时,我遇到了支持FragmentManager。它可以在Kotlin中用作变量,而在java中,我们可以将其等效方法称为。 我想知道变量在哪里,因为我看不到任何类似于该名称的变量声明,但是单击该变量将我带到fragmentActivity中的以下方法。java类。 在Kotlin中,这个方法如何可以作为变量访问,而在jav

  • 一、简介 碎片是什么?把一个完整的页面理解成由许多块组成,而每一个“块”我们就可认为就是一个”碎片“! 这样,我们在页面放置一些碎片,在以后的维护维护中,只需要对碎片进行维护! 碎片功能支持完全手动更新,并且可以搜索内容,可恢复数据至任何历史版本,常用于专题制作和首页频繁更新的内容。 您可以在模板中直接插入 {pc:block pos="index_block_1"}{/pc} 格式的碎片标签,然

  • 问题内容: 如何将变量发送到服务器?我是否将它们添加到请求的URL的末尾,例如? 因此或多或少: 问题答案: 如果您想使用GET将变量传递给服务器,那就可以了。记住要正确地逃避(urlencode)! 如果您不希望变量可见,也可以使用POST。 一个完整的示例将是: 为了测试这一点(使用PHP),您可以查看检索到的内容。

  • 详细信息 1。我有导航抽屉在我的项目。它是通过标准的Android studio项目(带有导航抽屉)创建的。 2。我使用片断和片断管理器来处理屏幕的内容。它发生在onNavigationDrawerItemSelected()中。 3。以下是MainActivity中onCreateOptionsMenu()的实现: 4.当我使用FragmentManager.replace()时--一切都很好。

  • 我可以在D片段参数中设置所有六个arg,但在这种情况下,我应该在每个方向上传递所有六个变量。那么有没有其他的方法直接传递我想要的args在特定的方向上,然后在D片段中检索它

  • 有没有办法,在不调用存储片段中的onCreateView()的情况下清除support FragmentManager的backbackback? 我理解片段lyfe循环,并在弹出时调用onDestroyView()和onCreateView()。http://developer.android.com/guide/components/fragments.html#Creating 我还知道如何