2017-08-17 4 views
0

Ich arbeite an einer App, die user login Bildschirm hat. Immer wenn ich auf die Schaltfläche Signin klicke, stürzt die App ab. Wie, ich bin neu in Android App-Entwicklung, bestehend aus Login-Bildschirm-Anwendungen; daher nicht in der Lage, den Fehler zu beheben. Bitte schauen Sie auf den Fehler und helfen Sie mir, es zu beheben. LoginActivity.java Datei Anbringen:App stürzt ab, wenn ich mich anmelde

public class LoginActivity1 extends Activity implements OnClickListener{ 
    private EditText user, pass; 
    private Button bLogin; 
// Progress Dialog 
    private ProgressDialog pDialog; 
// JSON parser class 
    JSONParser jsonParser = new JSONParser(); 
    private static final String LOGIN_URL = "http://13.228.8.241/phonegap/api/login.php"; 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_MESSAGE = "message"; 
    @Override protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); setContentView(R.layout.activity_login1); 
     user = (EditText)findViewById(R.id.username); 
     pass = (EditText)findViewById(R.id.password); 
     bLogin = (Button)findViewById(R.id.signin); 
     bLogin.setOnClickListener(this); 
    } 
    @Override public void onClick(View v) { 
     String username= user.getText().toString(); 
     String password=pass.getText().toString(); 
      switch (v.getId()) { 
       case R.id.signin: 
        new AttemptLogin().execute(username,password); 
       case.default: break; 
      } 
    } 
    class AttemptLogin extends AsyncTask<String, String, String> { 
     /** * Before starting background thread Show Progress Dialog * */ 
     boolean failure = false; 
     @Override protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(LoginActivity1.this); 
      pDialog.setMessage("Attempting for login..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     @Override protected String doInBackground(String... args) { 
      int success; 
      String username = args[0]; 
      String password = args[1]; 
      try { List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("username", username)); 
       params.add(new BasicNameValuePair("password", password)); 
       Log.d("request!", "starting"); 
       JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", params); 
       Log.d("Login attempt", json.toString()); 
       success = json.getInt(TAG_SUCCESS); 
       if (success == 1) { 
        Log.d("Successfully Login!", json.toString()); 
        Intent i = new Intent(LoginActivity1.this,ContentSecond.class); 
        startActivity(i); 
        finish(); 
        return json.getString(TAG_MESSAGE); 
       } 
       else{ 
        return json.getString(TAG_MESSAGE); 
       } 
      } 
      catch (JSONException e) { 
       e.printStackTrace(); 
      } return null; 
     } 

     protected void onPostExecute(String message) { 
      pDialog.dismiss(); 
      if (message != null){ 
       Toast.makeText(LoginActivity1.this, message, Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 

Die logcat ist:

Schwerwiegende Ausnahme: AsyncTask # 1 Prozess: com.adani.animon.adani, PID: 8678 java.lang.RuntimeException: Bei der Ausführung von doInBackground() unter android.os.AsyncTask $ 3..done (AsyncTask.java:309) unter java.util.con ist ein Fehler aufgetreten current.FutureTask.finishCompletion (FutureTask.java:354) bei java.util.concurrent.FutureTask.setException (FutureTask.java:223) bei java.util.concurrent.FutureTask.run (FutureTask.java:242) um android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:234) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:588) bei java.lang.Thread.run (Thread.java:818) verursacht durch: java.lang.NullPointerException: Versuch, virtuelle Methode 'java.l ang.String org.json.JSONObject.toString()‘auf null Objektreferenz bei com.adani.animon.adani.LoginActivity1 $ AttemptLogin.doInBackground (LoginActivity1.java:76) bei com.adani.animon .adani.LoginActivity1 $ AttemptLogin.doInBackground (LoginActivity1.java:53) bei android.os.AsyncTask $ 2.call (AsyncTask.java:295) bei java.util.concurrent.FutureTask.run (FutureTask.java:237) bei android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:234) um java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) unter java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:588) bei java.lang.Thread.run (Thread.java:818) 08-17 14: 58: 23.089 8678-8842/com .adani.animon.adani D/libEGL: eglTerminate EGLDisplay = 0xe0362834 08-17 14: 58: 23.089 8678-8678/com.adani.animon.adani D/ViewRootImpl: # 3 mView = null 08-17 14:58 : 23.099 8678-8678/com.adani.animon.adani E/WindowManager: android.view.WindowLeaked: Aktivität com.adani.animon.adani.LoginActivity1 hat Fenster com.android.internal.policy.PhoneWindow $ DecorView {durchgesickert c367582 VE ..... R ...... D 0,0-668,232}, die ursprünglich hier bei android.view.ViewRootImpl. (ViewRootImpl.java: 599)hinzugefügt wurdebei android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:326) bei android.view.WindowManagerImpl.addView (WindowManagerImpl.java:109) bei android.app.Dialog.show (Dialog.java:505) unter com.adani.animon.adani.LoginActivity1 $ AttemptLogin.OnPreExecute (LoginActivity1.java:62) bei android.os.AsyncTask.executeOnExecutor (AsyncTask.java:604) bei android.os.AsyncTask.execute (AsyncTask.java:551) bei com.adani.animon.adani .LoginActivity1.onClick (LoginActivity1.java:45) bei android.view.View.performClick (View.java:5714) bei android.widget.TextView.performClick (TextView.java:10926) bei android.view.View $ PerformClick.run (View.java:22589) bei android.os.Handler.handleCallback (Handler.java:739) bei android.os.Handler.dispatchMessage (Handler.java:95) bei androi d.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:7325) bei java.lang.reflect.Method.invoke (native Methode) um com. android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1230) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)

+0

Es gibt einige Fehler in doInBackground() -Methode Variable mit dem Namen "json" zugreifen. Die App stürzt aufgrund des Null-Objekts ab. Versuchen Sie, den Code mit Haltepunkten zu debuggen. –

+0

Vielen Dank für Ihr Interesse Bruder, aber ich bin nicht so gut mit dem Debuggen. Ich habe viele Codes versucht, um dies zu lösen, aber gescheitert. –

+0

Sie müssen Debuggen, um zu wissen, wo der Fehler ist. Suche SO oder google über das Debugging –

Antwort

0

Ihre JSON-Antwort ist null

Nachricht lautet: verursacht durch: java.lang.NullPointerException: Versuch, die virtuelle Methode 'java.lang.String org.json.JSONObject.toString()' aufzurufen eine Null-Objekt Referenz

sollten Sie NULL-Prüfung hinzufügen, bevor

+0

Danke, aber wie Null-Check vor dem Zugriff auf die Variable hinzufügen? –

+0

Sie müssen 'if (json! = Null)' vor der Ausführung von schreiben 'success = json.getInt (TAG_SUCCESS);' –

+0

Okay. Aber jetzt zeigt es einen Fehler in der Zeile, wenn (Erfolg == 1) 'als Variable 'Erfolg' möglicherweise nicht initialisiert wurde, obwohl es initialisiert ist. –

Verwandte Themen