检查Bundle参数时,两个If-else语句都在执行

时间:2015-07-29 19:55:14

标签: android if-statement bundle

在我的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都在执行?

1 个答案:

答案 0 :(得分:1)

  

为什么if和else都在执行?

他们可能是两个不同的交易。一个是以编程方式提交的,另一个可能是在托管活动的布局中声明的