使用json时出现Android错误,原因是:java.lang.NullPointerException
我必须创建一个程序,它从json文件中写入信息。我有使用json时出现Android错误,原因是:java.lang.NullPointerException,java,android,json,string,Java,Android,Json,String,我必须创建一个程序,它从json文件中写入信息。我有RelativeLayout,如果单击它显示第二个Json文件,如果第二次单击显示第三个Json文件,则所有文件都在字符串数组中。当我试图编译我的项目时,我有一个错误 12-13 18:06:05.279 12257-12257/? E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: miguel.example.com.jsonzadanie, PID: 12257 java.lang.
RelativeLayout
,如果单击它显示第二个Json文件,如果第二次单击显示第三个Json文件,则所有文件都在字符串数组中。当我试图编译我的项目时,我有一个错误
12-13 18:06:05.279 12257-12257/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: miguel.example.com.jsonzadanie, PID: 12257
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{miguel.example.com.jsonzadanie/miguel.example.com.jsonzadanie.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
at android.app.Activity.findViewById(Activity.java:2072)
at miguel.example.com.jsonzadanie.MainActivity.<init>(MainActivity.java:41)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1606)
at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2259)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
这一行:
TextView output = (TextView) findViewById(R.id.textView1);
在某种方法之外。将其放入onCreate
方法中,如下所示:
TextView output;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output = (TextView) findViewById(R.id.textView1);
...
}
更改代码后的其他问题?什么问题?这不是错误,这是警告。它没有被使用,因为你没有在其他地方使用!检查我的答案,
TextView输出
在onCreate
之外,只有findViewById
被移动到onCreate
中。主要的问题是:您想在类中使用输出
。直到现在。但是对于callfindViewById
,需要一个上下文,该上下文可以在onCreate或类中的其他方法中使用。但是在方法之外(没有实例),您可以这样做。
12-13 19:00:56.109 23670-23670/miguel.example.com.jsonzadanie E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: miguel.example.com.jsonzadanie, PID: 23670
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:4029)
at android.view.View.performClick(View.java:4789)
at android.view.View$PerformClick.run(View.java:19881)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.view.View$1.onClick(View.java:4024)
at android.view.View.performClick(View.java:4789)
at android.view.View$PerformClick.run(View.java:19881)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at miguel.example.com.jsonzadanie.MainActivity.parse(MainActivity.java:68)
at miguel.example.com.jsonzadanie.MainActivity.Refresh_listener(MainActivity.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.view.View$1.onClick(View.java:4024)
at android.view.View.performClick(View.java:4789)
at android.view.View$PerformClick.run(View.java:19881)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5294)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
TextView output = (TextView) findViewById(R.id.textView1);
TextView output;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output = (TextView) findViewById(R.id.textView1);
...
}