android中碎片事务的Nullpointer异常 我有一个简单的程序来执行片段替换,得到 此日志错误…如何克服此错误 我在这里使用newInstance

android中碎片事务的Nullpointer异常 我有一个简单的程序来执行片段替换,得到 此日志错误…如何克服此错误 我在这里使用newInstance,android,android-fragments,Android,Android Fragments,MainActivity.java public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Fir

MainActivity.java

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //First fragment should be mounted on oncreate of main activity
        if (savedInstanceState == null) {  

            Fragment newFragment = FragmentOne.newInstance();  
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();  
            ft.replace(R.id.container, newFragment).addToBackStack(null).commit();  
        }
    }

}
public class FragmentOne extends Fragment{

    Button btn;

    public static FragmentOne newInstance(){
        FragmentOne fragment = new FragmentOne();
        return  fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_one, container, false);

        btn=(Button) getActivity().findViewById(R.id.button1);

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                FragmentManager manager = getActivity().getSupportFragmentManager();
                Fragment frgObj=FragmentOne.newInstance();
                FragmentTransaction ft = manager.beginTransaction();
                ft.replace(R.id.container, frgObj,"FragmentOne");
                ft.addToBackStack(null);
                ft.commit();                
            }
        });
    }
}
FragmentOne.java

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //First fragment should be mounted on oncreate of main activity
        if (savedInstanceState == null) {  

            Fragment newFragment = FragmentOne.newInstance();  
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();  
            ft.replace(R.id.container, newFragment).addToBackStack(null).commit();  
        }
    }

}
public class FragmentOne extends Fragment{

    Button btn;

    public static FragmentOne newInstance(){
        FragmentOne fragment = new FragmentOne();
        return  fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_one, container, false);

        btn=(Button) getActivity().findViewById(R.id.button1);

        return view;
    }

    @Override
    public void onStart() {
        super.onStart();

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                FragmentManager manager = getActivity().getSupportFragmentManager();
                Fragment frgObj=FragmentOne.newInstance();
                FragmentTransaction ft = manager.beginTransaction();
                ft.replace(R.id.container, frgObj,"FragmentOne");
                ft.addToBackStack(null);
                ft.commit();                
            }
        });
    }
}
活动\u main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical"
    android:id="@+id/container">

</LinearLayout>

您的
片段
视图
未附加到
onCreateView()方法上的
活动
,因此
btn
null
换行

   btn=(Button) getActivity().findViewById(R.id.button1);
进入

否则,将该行移动到
onStart()
方法