Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getApplicationContext()和#x27;关于空对象引用_Java_Android_Json_Android Volley - Fatal编程技术网

Java getApplicationContext()和#x27;关于空对象引用

Java getApplicationContext()和#x27;关于空对象引用,java,android,json,android-volley,Java,Android,Json,Android Volley,和在清单中(这一定是错误) 为什么要使用getApplicationContext?使用此,因为您已经处于活动中,或者将上下文另存为局部变量并使用该变量。发布AppController类-这就是引发异常的原因。AppController.getInstance().addToRequestQueue(req);这是一个常见的问题,在这里写下这个问题之前,试着在谷歌上搜索更多。 package com.monishn.android.volley; import android.content.

和在清单中(这一定是错误)


为什么要使用
getApplicationContext
?使用
,因为您已经处于
活动中
,或者将上下文另存为局部变量并使用该变量。发布AppController类-这就是引发异常的原因。AppController.getInstance().addToRequestQueue(req);这是一个常见的问题,在这里写下这个问题之前,试着在谷歌上搜索更多。
package com.monishn.android.volley;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    // json array response url
    private String urlJsonArry = "www.shaoniiuc.com/my_json";

    private static String TAG = MainActivity.class.getSimpleName();
    private Button btnMakeObjectRequest, btnMakeArrayRequest;

    // Progress dialog
    private ProgressDialog pDialog;

    private TextView txtResponse;

    // temporary string to show the parsed response
    private String jsonResponse;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnMakeArrayRequest = (Button) findViewById(R.id.btnArrayRequest);
        txtResponse = (TextView) findViewById(R.id.txtResponse);
        pDialog = new ProgressDialog(this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);

        btnMakeArrayRequest.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
// making json array request
                makeJsonArrayRequest();
            }
        });

    }

    /**
     * Method to make json array request where response starts with [
     * */
    private void makeJsonArrayRequest() {

        showpDialog();


        JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,new Response.Listener<JSONArray>(){

                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());

                        try {
                            // Parsing json array response
                            // loop through each json object
                            jsonResponse = "";
                            for (int i = 0; i < response.length(); i++) {

                                JSONObject person = (JSONObject) response.get(i);

                                String id = person.getString("id");
                                String name = person.getString("name");

                                jsonResponse += "Name: " + name + "\n\n";
                                jsonResponse += "Id: " + id + "\n\n";

                            }
                            txtResponse.setText(jsonResponse);

                        } catch (JSONException e) {
                            e.printStackTrace();
                            Toast.makeText(getApplicationContext(), "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                        }

                        hidepDialog();
                    }
            }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                Toast.makeText(getApplicationContext(),error.getMessage(), Toast.LENGTH_SHORT).show();
                hidepDialog();
            }
        });

// Adding request to request queue
        AppController.getInstance().addToRequestQueue(req);
    }

    private void showpDialog() {
        if (!pDialog.isShowing())
            pDialog.show();
    }

    private void hidepDialog() {
        if (pDialog.isShowing())
            pDialog.dismiss();
    }
}
08:59:19.981 27919-27919/com.monishn.android.volley E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
                                                                                    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:107)
                                                                                    at com.monishn.android.volley.AppController.getRequestQueue(AppController.java:33)
                                                                                    at com.monishn.android.volley.AppController.addToRequestQueue(AppController.java:46)
                                                                                    at com.monishn.android.volley.MainActivity.makeJsonArrayRequest(MainActivity.java:107)
                                                                                    at com.monishn.android.volley.MainActivity.access$000(MainActivity.java:23)
                                                                                    at com.monishn.android.volley.MainActivity$1.onClick(MainActivity.java:53)
                                                                                    at android.view.View.performClick(View.java:5207)
                                                                                    at android.view.View$PerformClick.run(View.java:21168)
                                                                                    at android.os.Handler.handleCallback(Handler.java:746)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                    at android.os.Looper.loop(Looper.java:148)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    03-22 08:59:21.847 27919-27919/com.monishn.android.volley 
public class AppController extends Application {

    protected static AppController sInstance;
    private RequestQueue mRequestQueue;

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

        mRequestQueue = Volley.newRequestQueue(this);
        sInstance = this;
    }

    public synchronized static AppController getInstance() {
        return sInstance;
    }

    public RequestQueue getRequestQueue() {
        return mRequestQueue;
    }
}
<application
        android:name=".AppController"
        android:allowBackup="true"
        ....
AppController.getInstance().getRequestQueue().add(req)