5

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

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

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

ログイン アクティビティ

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 01:48:08.819: E/AndroidRuntime(29242): FATAL EXCEPTION: main
10-24 01:48:08.819: E/AndroidRuntime(29242): java.lang.NullPointerException: println needs a message
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.util.Log.println_native(Native Method)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.util.Log.i(Log.java:143)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at com.android.moyenne.activity.LoginActivity$4.run(LoginActivity.java:163)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.app.Activity.runOnUiThread(Activity.java:3707)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at com.android.moyenne.activity.LoginActivity.LoginAction(LoginActivity.java:78)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at com.android.moyenne.activity.LoginActivity$1.onClick(LoginActivity.java:46)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.view.View.performClick(View.java:2408)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.view.View$PerformClick.run(View.java:8816)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.os.Handler.handleCallback(Handler.java:587)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.os.Looper.loop(Looper.java:123)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at android.app.ActivityThread.main(ActivityThread.java:4627)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at java.lang.reflect.Method.invokeNative(Native Method)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at java.lang.reflect.Method.invoke(Method.java:521)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-24 01:48:08.819: E/AndroidRuntime(29242):    at dalvik.system.NativeStart.main(Native Method)
10-24 01:48:12.260: I/Process(29242): Sending signal. PID: 29242 SIG: 9
4

2 に答える 2

0

画像は imageView であり、imageurl はサーバーから画像をロードするための URL です。

try {
    InputStream in = new java.net.URL(imageURl).openStream();
    this.image = BitmapFactory.decodeStream(in);             
} catch (Exception e) { 
    String msg = (e.getMessage() == null) ? "image load failed!" :e.getMessage();
    Log.i("image load error", msg);
}
于 2015-07-03T08:49:27.880 に答える