2015-10-05 5 views
1

мое приложение разбилось всегда, если я ввел неправильный пароль в свой Loginscreen, и я не знаю, как я могу справиться с этим исключением. Ниже моего кода.Приложение разбилось после ввода неправильного пароля

public class Login extends AppCompatActivity implements View.OnClickListener{ 

    private EditText eUsername, ePasswort; 
    private Button bAnmelden, bRegestrieren; 
    private ProgressDialog pDialog; 


    //Encoder 
    JSONParser jsonParser = new JSONParser(); 

    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_MESSAGE = "Du bist jetzt eingeloggt"; 
    private static final String TAG_USERNAME_PREF = "BENUTZERNAME"; 


    // Verbindung zum Server 
    private static final String LOGIN_URL = "http://192.168.77.1:80/webservice/login.php"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_); 

     // Editfelder 
     eUsername = (EditText)findViewById(R.id.FELD_username); 
     ePasswort = (EditText)findViewById(R.id.FELD_passwort); 

     //Button 
     bAnmelden = (Button)findViewById(R.id.BUTTON_anmelden); 
     bRegestrieren= (Button)findViewById(R.id.BUTTON_regestrieren); 

     //Hier werden die Button mit einen Klicklistener ausgestattet 
     bAnmelden.setOnClickListener(this); 
     bRegestrieren.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.BUTTON_anmelden: 

       new VersuchLogin().execute(); 

      break; 

      case R.id.BUTTON_regestrieren: 
       Intent i = new Intent(this, Register.class); 
       startActivity(i); 
       break; 

      default: 
       break; 
     } 
    } 
    // 
    class VersuchLogin extends AsyncTask<String,String,String>{ 

     // Hier wird schon ausgeführt 
     protected void onPreExecute(){ 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Login.this); 
      pDialog.setMessage("Versucht einzuloggen..."); 
      //unbestimmt 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     @Override 
     protected String doInBackground(String... args) { 
      // Checkt erfogreichen Tag 
      int erfolgreich; 
      String username = eUsername.getText().toString(); 
      String passwort = ePasswort.getText().toString(); 

      try{ 
      // Hier werden die Parameter gebildet 
       List<NameValuePair> parameter = new ArrayList<NameValuePair>(); 
       parameter.add(new BasicNameValuePair("username",username)); 
       parameter.add(new BasicNameValuePair("password", passwort)); 

       //Holt sich die Daten beim anfragen des HTTP 
       JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL,"POST",parameter); 


       //Json erfolgreich entcondiert 
       erfolgreich = json.getInt(TAG_SUCCESS); 
       if (erfolgreich ==1){ 

        //Teile die Userdaten 
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(Login.this); 
        SharedPreferences.Editor editor = sharedPreferences.edit(); 
        editor.putString(TAG_USERNAME_PREF,eUsername.getText().toString()); 
        editor.commit(); 


        Intent i = new Intent(Login.this,MainActivity.class); 
        finish(); 
        startActivity(i); 
        overridePendingTransition(0,0); 

        return (TAG_MESSAGE); 

       } else { 
        return json.getString(TAG_MESSAGE); 
       } 

      } catch (JSONException e) { 

       e.printStackTrace(); 
      } 

      return null; 
     } 


     @Override 
     protected void onPostExecute(String file_url) { 
      //bendet den Dialog 
      pDialog.dismiss(); 
      if(file_url != null); 
      Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show(); 

     } 
    } 

} 
+0

пожалуйста, напишите ваш LogCat – Aakash

+2

Начинаешь активность в методе doInBackground, а затем вызвать pDialog.dismiss(); ?? Логически сбой, как вы распоряжаетесь диалогом без просмотра? отправьте logcat для получения дополнительной информации. –

+0

у вас есть нежелательная точка с запятой в этой строке - if (file_url! = Null); а также отодвиньте снимок ниже toast.maketext –

ответ

0

Ваша проблема заключается в разборе сообщения об ошибке, я думаю. Сообщение об ошибке не является допустимой строкой Json или не строкой Json.

Вы можете проверить ответное сообщение от веб-службы. Если ошибки нет, проанализируйте строку json. Else, Show Toast сообщение, используя сообщение об ошибке, которое вы получаете.

Это только одно из многих решений. Вы можете многое сделать. Также вы можете использовать коды ошибок из ответа.

0

Я думаю, у вас есть нулевой ответ в логине? Вы проверяете, какой ответ приходит, когда пароль неправильный?

Кроме того, вы должны поставить, если условие, как это

JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL,"POST",parameter); 
     if(json!=null){ 
      //Json erfolgreich entcondiert 
      erfolgreich = json.getInt(TAG_SUCCESS); 
     } 
Смежные вопросы