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"); ...