Java 从扩展片段的类中获取参数()时的NPE

Java 从扩展片段的类中获取参数()时的NPE,java,android,android-fragments,fragment,Java,Android,Android Fragments,Fragment,在下面的代码中,我试图将布局具有选项卡的mainactivity的值传递给另一个类,该类使用setArgument()和getArgument()扩展fragment。当运行应用程序时。logcate抛出NPE。代码中缺少了什么 主要活动: public void onClick(View v) { // TODO Auto-generated method stub Fragment mSelectedFragment = null; switch (v.getId(

在下面的代码中,我试图将布局具有
选项卡的
mainactivity
的值传递给另一个类,该类使用
setArgument()
getArgument()
扩展
fragment
。当运行应用程序时。logcate抛出
NPE
。代码中缺少了什么

主要活动:

public void onClick(View v) {
    // TODO Auto-generated method stub
    Fragment mSelectedFragment = null;

    switch (v.getId()) {
    case R.id.btn00:    
        Bundle mBundle = new Bundle();
        String clicks = Integer.toString(i);
        mBundle.putString("btn1_clicks", clicks);
        mSelectedFragment = new Fragment00();
        mSelectedFragment.setArguments(mBundle);

        if (mSelectedFragment != null) {
            FragmentManager mFragmentManager = getFragmentManager();
            mFragmentManager.beginTransaction()
            .replace(R.id.fragment00ID, mSelectedFragment).commit();
        }
        i ++;
        break;
    }
类\u扩展\u片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view = inflater.inflate(R.layout.fragment00, null);
    return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);

    mTv = (TextView) getView().findViewById(R.id.fragment00Tv00);
    /*line 32->*/String str = getArguments().getString("btn1_clicks").toString();
    mTv.setText("the Button was clicked "+str+ " time(s)");
    Log.i(TAG, "onActivityCreated(): "+getArguments().getString("btn1_clicks").toString());
}
日志:

05-27 13:36:14.380: E/AndroidRuntime(11609): java.lang.RuntimeException: Unable to 
start activity    
ComponentInfo{com.example.fragments01/com.example.fragments01.MainActivity}:  
java.lang.NullPointerException
05-27 13:36:14.380: E/AndroidRuntime(11609):    at  
com.example.fragments01.Fragment00.onActivityCreated(Fragment00.java:32)
05-27 13:36:14.380: E/AndroidRuntime(11609):    at 
android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1860)

我认为问题在于,您正在
onActivityCreated
上检索
getArguments()
,但您还没有创建捆绑包(您正在
onClick
中创建它)。您应该检查
getArguments()
是否返回null,或者使用
onClick
创建包

以前的版本将是:

if (getArguments() != null){
    String str = getArguments().getString("btn1_clicks").toString();
}

第几行是什么(Fragment00.java:32)?@algui91 Fragment00是扩展fragmentNo的类的名称,我想知道异常发生的原因,日志显示是Fragment00.java文件的第32行。而且在
i++
中有一个空格,它应该是
i++
您是否在
Fragment00
中覆盖
onCreateView()
?如果您不这样做,
getView
将返回
null
@algui91请将更新后的代码显示在第32行的位置,但我正在调用
getargument
内部
onActivityCreated()
,我应该从哪里调用它?还有什么会导致捆绑包无法创建?除非您至少单击一次片段,否则捆绑包不会被创建,并且在您可以在视图中单击之前,
onActivityCreated
将被执行。是的,我知道。非常感谢。你能把我的问题投赞成票吗?因为昨天我试着理解这个片段,而你最后的评论对我很有帮助,现在我能够更清楚地了解片段是如何工作的