0

ログインしようとすると、アプリに問題が発生します。

実際、最初に登録すると(remerberMe isChecked()登録アクションのチェックボックスの場合、次の接続でメインアクティビティが表示され、そうでない場合はログインアクティビティが表示されます)、正常に動作します。

ただし、Loginアクティビティは、登録アクションの後の次の接続で呼び出されたときに機能しません。

修正方法がわからず、logcat がわかりません。

ログイン アクティビティ

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        setTitle(R.string.loginTitle);

        // Importing all assets like buttons, text fields
        inputUsername = (EditText) findViewById(R.id.username_value);
        inputPassword = (EditText) findViewById(R.id.password_value);
        btnLogin = (Button) findViewById(R.id.loginButton);
        btnExit = (Button) findViewById(R.id.exitButton);
        btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegister);
        rememberMe = (CheckBox) findViewById(R.id.rememberNameRegister);

        // Login button Click Event
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LoginAction();
            }
        });

        // Link to Register Screen
        btnLinkToRegister.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),
                        RegisterActivity.class);
                startActivity(i);
                finish();
            }
        });

        btnExit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();

            }
        });
    }

    public void LoginAction() {
        Log.i("Login", "Login Action");
        progressDialog = ProgressDialog.show(LoginActivity.this, null,
                getResources().getString(R.string.loginProgressMessage), true);

        // try {
        runOnUiThread(new Runnable() {
            String username = inputUsername.getText().toString();
            String password = inputPassword.getText().toString();

            @Override
            public void run() {
                Log.i("Login Run", "username " + username);

                switch (username.length()) {
                case 0:
                    blankUserName();

                    break;
                }

                switch (password.length()) {
                case 0:
                    blankPassWord();
                    // thread.stop();
                    break;
                }

                try {
                    if (username.length() > 0 && password.length() > 0) {
                        Log.i("Login Run", "password " + password);
                        // Password pass = new Password(username, password);
                        DatabaseHelper db = new DatabaseHelper(
                                getApplicationContext());
                        int count = db.getRowCount();
                        Log.i("Login", "getRowCompte " + count);
                        if (count == 1) {
                            Log.i("Login","getLogin1 ");
                            // if (db.getLogin(username, password) == 1) {
                            if (db.Login(username, password)== true) {
                                 Log.i("Login", "rememberMe.isChecked()");
                                if (rememberMe.isChecked() == true) {
                                    statut = "on";
                                } else if (rememberMe.isChecked() == false) {
                                    statut = "off";
                                }
                                Log.i("Login", "ok ischecked");
                                Log.i("Login","getRowCompteStat "+ db.getRowCountStat());
                                if (db.getRowCountStat() == 1) {
                                    db.UpdateStatut(statut);
                                    Log.i("Login", "getRowCompte " + count);
                                }
                                Toast.makeText(getApplicationContext(),
                                        "Student Moyenne \n   Bienvenu!",
                                        Toast.LENGTH_LONG).show();
                                Log.i("Login Run", "Connecté");
                                Intent moy = new Intent(
                                        getApplicationContext(),
                                        MoyenneMain.class);
                                // Close all views before launching
                                // Dashboard
                                moy.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(moy);
                                finish();
                                db.close();
                            } else if (db.Login(username, password)==false){
                                // if (db.getLogin(username, password) == 0) {
//                              Log.i("Login Run", "faux password");
                                Toast.makeText(LoginActivity.this,"Invalid Username/Password",Toast.LENGTH_LONG).show();
                                Intent login = new Intent(getApplicationContext(),LoginActivity.class);
                                login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(login);
                                finish();
                                db.close();
                            }
                        } else if (count == 0) {
                            Log.i("Login Run", "Enregistrez vous");
                            Toast.makeText(LoginActivity.this,
                                    "Enregistrez vous!", Toast.LENGTH_SHORT)
                                    .show();
                            Intent register = new Intent(
                                    getApplicationContext(),
                                    RegisterActivity.class);
                            register.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(register);
                            finish();
                            db.close();
                        }
                    }

                } catch (Exception e) {
                    Log.i("Login Error1", e.getMessage());
                    Toast.makeText(LoginActivity.this, e.getMessage(),
                            Toast.LENGTH_LONG).show();
                }
            }
        });
        // } catch (Exception e) {
        // Thread.currentThread().destroy();
        // Log.i("Login Error2", e.getMessage());
        // Toast.makeText(LoginActivity.this, e.getMessage(),
        // Toast.LENGTH_LONG).show();
        // }

    }

    private void blankUserName() {
        Toast.makeText(LoginActivity.this, "Entrez un nom Utilisateur SVP!",
                Toast.LENGTH_SHORT).show();
        Intent login = new Intent(getApplicationContext(), LoginActivity.class);
        login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(login);
        finish();
    }

    private void blankPassWord() {
        Toast.makeText(LoginActivity.this, "Entrez un mot de passe SVP!",
                Toast.LENGTH_SHORT).show();
        Intent login = new Intent(getApplicationContext(), LoginActivity.class);
        login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(login);
        finish();
    }

DatabaseHelper の一部

public int getRowCountStat() {
        String countQuery = "SELECT  * FROM " + TABLE_STATUT;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        int rowCount = cursor.getCount();
        db.close();
        cursor.close();

        // return row count
        return rowCount;
    }

public int getRowCount() {
        String countQuery = "SELECT  * FROM " + TABLE_LOGIN;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        int rowCount = cursor.getCount();
        db.close();
        cursor.close();

        // return row count
        return rowCount;
    }

 public boolean Login(String username, String password) throws SQLException 
        {
            Cursor mCursor = db.rawQuery("SELECT * FROM " + TABLE_LOGIN + " WHERE username=? AND password=?"
                    , new String[]{username,password});
            if (mCursor != null) {           
                if(mCursor.getCount() > 0)
                {
                    return true;
                }
            }
         return false;
        }

public int UpdateStatut(String statut) {
            final static int idStat = 1;
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(STATUT, statut);
        return db.update(TABLE_STATUT, cv, ID_STAT + "=?",
                new String[] { String.valueOf(idStat) });
    }

ログキャット

10-24 09:41:19.429: I/Login(693): Login Action
10-24 09:41:19.559: I/Login Run(693): username jeff
10-24 09:41:19.559: I/Login Run(693): password a
10-24 09:41:19.650: I/Login(693): getRowCompte 1
10-24 09:41:19.650: I/Login(693): getLogin1 
10-24 09:41:19.659: I/Login Error1(693): Login failed!
10-24 09:41:19.659: W/System.err(693): java.lang.NullPointerException
10-24 09:41:19.659: W/System.err(693):  at com.android.moyenne.activity.DatabaseHelper.Login(DatabaseHelper.java:615)
10-24 09:41:19.659: W/System.err(693):  at com.android.moyenne.activity.LoginActivity$4.run(LoginActivity.java:111)
10-24 09:41:19.659: W/System.err(693):  at android.app.Activity.runOnUiThread(Activity.java:3707)
10-24 09:41:19.659: W/System.err(693):  at com.android.moyenne.activity.LoginActivity.LoginAction(LoginActivity.java:78)
10-24 09:41:19.669: W/System.err(693):  at com.android.moyenne.activity.LoginActivity$1.onClick(LoginActivity.java:46)
10-24 09:41:19.669: W/System.err(693):  at android.view.View.performClick(View.java:2408)
10-24 09:41:19.669: W/System.err(693):  at android.view.View$PerformClick.run(View.java:8816)
10-24 09:41:19.669: W/System.err(693):  at android.os.Handler.handleCallback(Handler.java:587)
10-24 09:41:19.669: W/System.err(693):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-24 09:41:19.669: W/System.err(693):  at android.os.Looper.loop(Looper.java:123)
10-24 09:41:19.669: W/System.err(693):  at android.app.ActivityThread.main(ActivityThread.java:4627)
10-24 09:41:19.669: W/System.err(693):  at java.lang.reflect.Method.invokeNative(Native Method)
10-24 09:41:19.669: W/System.err(693):  at java.lang.reflect.Method.invoke(Method.java:521)
10-24 09:41:19.669: W/System.err(693):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-24 09:41:19.680: W/System.err(693):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-24 09:41:19.680: W/System.err(693):  at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

例外を修正しました。実際、私はこの行で他のレイアウトからアイテムを呼び出しました:

rememberMe = (CheckBox) findViewById(R.id.rememberNameRegister); 

だから私はそれを変更しました:

rememberMe = (CheckBox) findViewById(R.id.rememberNameLogin);
于 2013-10-29T08:06:49.850 に答える