Java 如何将片段转换为上下文?
这是我的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
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你能解决这个问题吗?你能解释一下吗。那么我的代码会有什么变化??你能告诉我在哪里可以修改我的代码吗?这对我更好…如果你修改我的代码并把它给我。