Android 片段如何从parentActivity获取数据?

Android 片段如何从parentActivity获取数据?,android,android-fragments,android-intent,android-activity,Android,Android Fragments,Android Intent,Android Activity,我有两个活动MainActivity和DetailActivity,如果我在MainActivity的列表视图中单击,我将打算DetailActivity中的内容为“id”,在DetailActivity中我有两个片段(TabLayout ViewPager) 我的问题是:fragment如何从上述意图中获得“id” ,如果Android决定稍后重新创建片段,它将调用片段的无参数构造函数。因此,重载构造函数不是一个解决方案 在oncreate方法中获取值 int id = yourid;

我有两个活动
MainActivity
DetailActivity
,如果我在
MainActivity
的列表视图中单击,我将打算
DetailActivity
中的内容为“id”,在
DetailActivity
中我有两个片段(TabLayout ViewPager)

我的问题是:fragment如何从上述意图中获得“id”

,如果Android决定稍后重新创建片段,它将调用片段的无参数构造函数。因此,重载构造函数不是一个解决方案

在oncreate方法中获取值

 int id = yourid;
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,DetailFragment.newInstance(id)).commit();
@凌驾

     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if (getArguments() != null)
//mId is variable which contain (YourActivity)MainActivity value.you can use in fragment.
                mId = getArguments().getInt(ID);


        }
//在oncreate方法中调用YourActivity(MainActivity)

 int id = yourid;
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,DetailFragment.newInstance(id)).commit();

像@ CRKETETY07说,在你的片段中创建一个工厂方法,并通过捆绑参数传递数据,考虑下面的例子

public static YourFragment newInstance(Bundle args) {
      Yourfragment fragment = new YourFragment();
      Bundle bundle = args;
      // Or if your args is a variable data for example a string
      // use Bundle bundle = new Bundle(); bundle.putString("extra_name",value);
        // Now set the fragment arguments
        fragment.setArguments(bundle);
     return fragment;
}
现在你可以在你的碎片中的任何地方

Bundle args = getArguments();
// and access your extra by args.getString("extra_name"); ...

getActivity().getIntent()
?但您可能应该将意图的数据“向下”传递给片段,而不是“向上”获取它。答案不错,但解释答案的更具描述性的文本应该有助于让答案被接受java.lang.NullPointerException:尝试调用虚拟方法“java.lang.String android.os.Bundle.getString(java.lang.String)'在空对象引用上
Bundle args = getArguments();
// and access your extra by args.getString("extra_name"); ...