在我的Android应用中,我更换了一个传递int作为参数的片段:
Bundle bundle = new Bundle();
MyFragment fragment = new MyFragment ();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
bundle.putInt("id", myId);
fragment.setArguments(bundle);
ft.addToBackStack(null).replace(R.id.placeholder, fragment).commit();
在MyFragment中,我正在检查此Bundle是否为null:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_my, container, false);
Bundle args = this.getArguments();
if(args != null) {
Log.d(TAG, "args: "+args);
}
else {
Log.d(TAG, "no args: "+args);
}
return v;
}
我的Logcat结果:
args:Bundle [{id = 1}]
no args:null
为什么if和else都在执行?
答案 0 :(得分:1)
为什么if和else都在执行?
他们可能是两个不同的交易。一个是以编程方式提交的,另一个可能是在托管活动的布局中声明的