2016-05-05 4 views
-2

ich schon viele Dinge versuchen, dieses Problem zu lösen, aber ich dieses Problem nicht gelöst kann kann mir jemandStringRequest Null Pointer

 private void registerUser(final String name, final String email, 
            final String password,final String phonenumber,final String username) { 
    pDialog.setMessage("Registering ..."); 
    showDialog(); 
    StringRequest stringRequest = new StringRequest(Method.POST, "http://192.168.2.103/Bspark/addPengguna.php", new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      pDialog.dismiss(); 
      Toast.makeText(Register.this, "Register the Data", Toast.LENGTH_SHORT).show(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      pDialog.dismiss(); 
      Toast.makeText(Register.this, "Error Data Cannot be Registered", Toast.LENGTH_SHORT).show(); 
     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("name", name); 
      params.put("username", username); 
      params.put("password",password); 
      params.put("email",email); 
      params.put("phone", phonenumber); 

      return params; 
     } 
    }; 
    Log.d(TAG, "registerUser: "+stringRequest); 
    AppController.getInstance().addToReqQueue(stringRequest); 


} 

helfen und das ist meine PHP-Datei

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){ 

    include("db_connect.php"); 

//Getting values 
    $name = $_POST['name']; 
    $username = $_POST['username']; 
    $password = md5($_POST['password']); 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $response = array();  
    //Creating an sql query 
    $result = "INSERT INTO pengguna (nama, username, password, email, phone) VALUES ('$name','$username','$password','$email','$phone')"; 
    //Executing query to database 
    if($result>0){ 
     $response["success"] = 1; 
    }  
    else{ 
     $response["success"] = 0; 
    } 
// echoing JSON response 
    echo json_encode($response); 
    //Closing the database 
} 

?>

und mein Fehler ist

05-05 15: 39: 56.414 6883-6883 /? D/Register: registerUser: [] http://192.168.2.103/Bspark/addPengguna.php 0x85ca2559 NORMAL null

05-05 15: 39: 56.416 6883-6883 /? E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.beispiel.dennis.bspark, PID: 6883 java.lang.NullPointerException: Versuch, virtuelle Methode 'void com.example.dennis.bspark.AppController.addToReqQueue (com. android.volley.Request) 'auf einem Nullobjekt Referenz bei com.example.dennis.bspark.Register.registerUser (Register.java:89) bei com.example.dennis.bspark.Register.onClick (Register.java: 56) bei android.view.View.performClick (View.java:4789) bei android.view.View $ PerformClick.run (View.java:19881) bei android.os.Handler.handleCallback (Handler.java: 739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:135) bei android.app.ActivityThread.main (ActivityThread.java:5289) bei java.lang.reflect.Method.invoke (native Methode) bei java .lang.reflect.Method.invoke (Methode.java:372) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:904) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:699)

i bereits zu log.d versuchen, aber es ist nicht Nullpointer helfen mir bitte dank

meine AppController Klasse
private RequestQueue mRequestQueue; 
private static AppController mInstance; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mInstance = this; 
} 

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

public RequestQueue getReqQueue() { 
    if (mRequestQueue == null) { 
     mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 
    } 

    return mRequestQueue; 
} 

public <T> void addToReqQueue(Request<T> req, String tag) { 

    getReqQueue().add(req); 
} 

public <T> void addToReqQueue(Request<T> req) { 

    getReqQueue().add(req); 
} 

public void cancelPendingReq(Object tag) { 
    if (mRequestQueue != null) { 
     mRequestQueue.cancelAll(tag); 
    } 
} 
+2

Ihre AppController.getInstance() ist null nicht stringRequest –

+0

i mein Code bereits für die Aktualisierung AppController Ich glaube nicht, dass es null ist – dennisgon

+0

Aber Ihr Logcat sagt, dass es Null –

Antwort

0

Ihre AppController verdrahtet ist und der Kontext sollte von seinem Konstruktor erhalten wie folgt:

public class MySingleton { 
    private static MySingleton mInstance; 
    private RequestQueue mRequestQueue; 
    private ImageLoader mImageLoader; 
    private static Context mCtx; 

    private MySingleton(Context context) { 
     mCtx = context; 
     mRequestQueue = getRequestQueue(); 

     mImageLoader = new ImageLoader(mRequestQueue, 
       new ImageLoader.ImageCache() { 
      private final LruCache<String, Bitmap> 
        cache = new LruCache<String, Bitmap>(20); 

      @Override 
      public Bitmap getBitmap(String url) { 
       return cache.get(url); 
      } 

      @Override 
      public void putBitmap(String url, Bitmap bitmap) { 
       cache.put(url, bitmap); 
      } 
     }); 
    } 

    public static synchronized MySingleton getInstance(Context context) { 
     if (mInstance == null) { 
      mInstance = new MySingleton(context); 
     } 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     if (mRequestQueue == null) { 
      // getApplicationContext() is key, it keeps you from leaking the 
      // Activity or BroadcastReceiver if someone passes one in. 
      mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); 
     } 
     return mRequestQueue; 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     getRequestQueue().add(req); 
    } 

    public ImageLoader getImageLoader() { 
     return mImageLoader; 
    } 
}