Bundle params=new Bundle();
params.putBoolean("isNew", true);
getFragmentManager().beginTransaction()
.replace(R.id.main, Fragment
.instantiate(LandingScreen.this, "com.fragments.FragmentOne",params)).commit()
现在这是Fragment1
public class FragmentOne extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_one, null);
return root;
}
}
我在哪里收到Bundle params,我在创建这个Fragment时发送了?
亲切的问候
答案 0 :(得分:2)
您将在片段Bundle
onCreate(....)
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
boolean isNew=this.getArguments().getBoolean("isNew");
}
答案 1 :(得分:1)
Bundle
对象可作为参数onCreate()
onCreateView()
onActivityCreated()
onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_layout);
String myData=this.getArguments().getString("myData");
}
onCreateView()
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
String myData=this.getArguments().getString("myData");
return inflater.inflate(R.layout.example_fragment, container, false);
}
onActivityCreated()
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String myData=this.getArguments().getString("myData");
}
答案 2 :(得分:0)
大部分时间,您都会在getArguments()
中使用onCreate()
来调用Fragment
,在您实例化onCreateView()
之后但onActivityCreated()
和{{之前1}}会被调用。但是,as per Android documentation,如果您在创建Activity
时从Activity
调用此内容,则无法保证onCreate()
之前已完成初始化{{1}}被称为:
请注意,在片段活动仍处于创建过程中时,可以调用此方法。因此,您不能依赖此时正在初始化的活动的内容视图层次结构等内容。如果您想在创建活动本身后继续工作,请参阅onActivityCreated(Bundle)。
有关更多信息,请查看有关活动和片段的博文:http://www.zerotohired.com/2015/02/passing-data-between-activities-and-fragments-in-android。