Java 如何将片段转换为上下文?

Java 如何将片段转换为上下文?,java,android,android-fragments,Java,Android,Android Fragments,这是我的java代码。没有错误,但当我运行这个时,我发现了错误。如何解决它? 首先,我将片段转换为上下文。当我构建这段代码时,并没有错误,但当我运行这段代码时,有一些错误 public class firstpage extends Fragment { Button button1,button2,button3,button4,button5,button6; public firstpage() { // Required empty public

这是我的java代码。没有错误,但当我运行这个时,我发现了错误。如何解决它? 首先,我将片段转换为上下文。当我构建这段代码时,并没有错误,但当我运行这段代码时,有一些错误

    public class firstpage extends Fragment {
    Button button1,button2,button3,button4,button5,button6;
    public firstpage() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addListenerOnButton();

    }


    public void addListenerOnButton() {

        final Context context = getActivity().getApplicationContext();

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

        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent(context, page.class);
                startActivity(intent);

            }

        });


    }

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


        // Inflate the layout for this fragment
        return rootView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }
}
这是logcat:

10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime: FATAL EXCEPTION: main
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime: Process: com.nextappsbd.himu, PID: 8280
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nextappsbd.himu/com.nextappsbd.himu.MainActivity}: java.lang.NullPointerException
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2440)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:110)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:193)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5344)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:  Caused by: java.lang.NullPointerException
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at com.nextappsbd.himu.firstpage.addListenerOnButton(firstpage.java:35)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at com.nextappsbd.himu.firstpage.onCreate(firstpage.java:26)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:988)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:511)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.Activity.performStart(Activity.java:5371)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340)
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2440) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:110) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:193) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5344) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:676) 
10-26 02:09:48.725 8280-8280/com.nextappsbd.himu E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 

我认为答案与上下文无关。我认为问题在于,您试图在扩展布局之前添加一个按钮。如果你放线

addListenerOnButton()


充气布局后进入onCreateView,程序应该运行正常。

button1
null并调用
(Button)button1.findViewById(R.id.button1)将导致NullpointerException

原因:java.lang.NullPointerException10-26 02:09:48.725 8280-8280/com.nextapsbd.himu E/AndroidRuntime:at com.nextapsbd.himu.firstpage.addListenerOnButton(firstpage.java:35) 10-26 02:09:48.725 8280-8280/com.nextapsbd.himu E/AndroidRuntime:
在com.nextapsbd.himu.firstpage.onCreate上(firstpage.java:26)

更新

进行这些更改:

public class firstpage extends Fragment {
    Button button1,button2,button3,button4,button5,button6;
    View mRootView; // declare your rootview as global variable


    public firstpage() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //remove init buttons from here, because the view is not yet created
    }


    public void addListenerOnButton() {

        final Context context = getActivity().getApplicationContext();

        button1 = (Button) mRootView.findViewById(R.id.button1);// here i make the change

        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent(context, page.class);
                startActivity(intent);

            }

        });


    }

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


        addListenerOnButton();// add your listeners here

        return rootView;
    }

使用LogCat检查与崩溃相关的Java堆栈跟踪:我检查了错误,但无法解决,什么错误??张贴你的日志。@Rami你能解决这个问题吗?你能解释一下吗。那么我的代码会有什么变化??你能告诉我在哪里可以修改我的代码吗?这对我更好…如果你修改我的代码并把它给我。