使用json时出现Android错误,原因是:java.lang.NullPointerException

使用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.

我必须创建一个程序,它从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.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
中。主要的问题是:您想在类中使用
输出
。直到现在。但是对于call
findViewById
,需要一个上下文,该上下文可以在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);
    ...
}