簡體   English   中英

輸入錯誤密碼后,應用程式當機

[英]App crashed after typing wrong password

如果我在登錄屏幕中輸入了錯誤的密碼,我的應用程序總是崩潰,並且我不知道如何處理此異常。 在我的代碼下面。

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();

        }
    }

}

我認為您的問題是解析錯誤消息。 錯誤消息不是有效的Json字符串或不是Json字符串。

您可以檢查來自Web服務的響應消息。 如果沒有錯誤,請解析您的json字符串。 否則,使用收到的錯誤消息顯示Toast消息。

那只是許多解決方案之一。 您可以做很多事情。 您也可以使用響應中的錯誤代碼。

我猜您登錄時沒有響應? 您檢查密碼錯誤時會收到什么響應嗎?

另外,如果出現這種情況,您應該放

    JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL,"POST",parameter);
        if(json!=null){
           //Json erfolgreich entcondiert
           erfolgreich = json.getInt(TAG_SUCCESS);
         }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM