我的應用程序總是崩潰,如果我在我的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();
}
}
}
請發表您的logcat – Aakash
您在doInBackground方法開始活動,然後調用pDialog.dismiss(); ??邏輯上崩潰,你如何處理沒有視圖的對話?發佈logcat以獲取更多建議。 –
你在這一行有一個不需要的分號 - if(file_url!= null);並且將解僱移到toast.maketext下方 –