Android 输入错误密码后应用程序崩溃

Android 输入错误密码后应用程序崩溃,android,exception,login,Android,Exception,Login,如果我在登录屏幕中输入了错误的密码,我的应用程序总是会崩溃,我不知道如何处理这个异常。下面是我的代码 public class Login extends AppCompatActivity implements View.OnClickListener{ private EditText eUsername, ePasswort; private Button bAnmelden, bRegestrieren; private ProgressDialog pDial

如果我在登录屏幕中输入了错误的密码,我的应用程序总是会崩溃,我不知道如何处理这个异常。下面是我的代码

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

        }
    }

}
公共类登录扩展AppCompatActivity实现View.OnClickListener{
私人编辑文本eUsername,ePasswort;
私人按钮班梅尔登,布雷斯特里伦;
私人对话;
//编码器
JSONParser JSONParser=新的JSONParser();
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记\u MESSAGE=“Du bist jetzt eingeloggt”;
私有静态最终字符串标记\u USERNAME\u PREF=“BENUTZERNAME”;
//Verbindung zum服务器
私有静态最终字符串登录\u URL=”http://192.168.77.1:80/webservice/login.php";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
//伊迪特费尔德
eUsername=(EditText)findViewById(R.id.FELD_用户名);
ePasswort=(EditText)findViewById(R.id.FELD_passwort);
//钮扣
bAnmelden=(按钮)findViewById(R.id.Button\u anmelden);
bRegestrieren=(按钮)findviewbyd(R.id.Button\u regesterien);
//他是我的朋友
setOnClickListener(这个);
bRegestrieren.setOnClickListener(this);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.按钮\u anmelden:
新建VersuchLogin().execute();
打破
案例R.id.BUTTON\u regestrieren:
意图i=新意图(这是Register.class);
星触觉(i);
打破
违约:
打破
}
}
//
类VersuchLogin扩展了异步任务{
//你是谁
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(Login.this);
pDialog.setMessage(“Versucht einzuloggen…”);
//未估价
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
//check-erfogreichen标签
内尔福尔格雷希;
字符串username=eUsername.getText().toString();
字符串passwort=ePasswort.getText().toString();
试一试{
//Hier-werden模具参数gebildet
列表参数=新的ArrayList();
添加(新的BasicNameValuePair(“用户名”,username));
添加(新的BasicNameValuePair(“密码”,passwort));
//这是一个很好的例子
JSONObject json=jsonParser.makeHttpRequest(LOGIN_URL,“POST”,参数);
//Json erfolgreich entcondiert
erfolgreich=json.getInt(TAG_SUCCESS);
如果(erfolgreich==1){
//用户日期
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(Login.this);
SharedReferences.Editor=SharedReferences.edit();
putString(TAG_USERNAME_PREF,eUsername.getText().toString());
commit();
意图i=新意图(Login.this,MainActivity.class);
完成();
星触觉(i);
覆盖转换(0,0);
返回(标签信息);
}否则{
返回json.getString(TAG_消息);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串文件\u url){
//本德登对话
pDialog.disclose();
if(file_url!=null);
Toast.makeText(Login.this,file_url,Toast.LENGTH_LONG.show();
}
}
}

我认为您的问题是解析错误消息。错误消息不是有效的Json字符串或不是Json字符串

您可以检查来自web服务的响应消息。 如果没有错误,请解析json字符串。 否则,使用收到的错误消息显示Toast消息


这只是众多解决方案中的一个。你可以做很多事情。您还可以使用响应中的错误代码。

我认为您的问题是解析错误消息。错误消息不是有效的Json字符串或不是Json字符串

您可以检查来自web服务的响应消息。 如果没有错误,请解析json字符串。 否则,使用收到的错误消息显示Toast消息


这只是众多解决方案中的一个。你可以做很多事情。您还可以使用响应中的错误代码。

我猜您在登录时得到的响应为空?你检查过密码错误时会有什么反应吗

另外,如果条件是这样的,你应该把

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

我猜你在登录时得到了空响应?你检查过密码错误时会有什么反应吗

另外,如果条件是这样的,你应该把

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

请在doInBackground方法中启动活动,然后调用pDialog.dismise();?,然后发布日志??从逻辑上讲,如果没有视图,如何处理对话框??发布日志以获取更多建议。这一行有一个不需要的分号-if(file_url!=null);并将disease移到toast.maketext下面。请发布您的日志。在doInBackground方法中启动活动,然后调用pDialog.disease()??从逻辑上讲,如果没有视图,如何处理对话框??发布日志以获取更多建议。这一行有一个不需要的分号-if(file_url!=null);并将其移到toast.maketext下面