web-dev-qa-db-ja.com

Android以前にログインしたユーザーを確認するか、ログインアクティビティを開始します

ユーザーがアプリを起動したがログインしたことがないときにログインアクティビティを開始したい。ログインが以前に完了している場合、アプリはログインページをスキップしてMainMenu.Javaに移動します。私が今持っているものは:

    public class Login extends Activity implements OnClickListener, TaskCompleteCallback{

     first_time_check();

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.configure);

    ...}

private boolean first_time_check() {    
    String first = mPreferences.getString("first", null);
        if((first == null)){
            Intent i = new Intent(Login.this, MainMenu.class);
             startActivity(i);
        }
        return false;
    }

...
        SharedPreferences.Editor editor = mPreferences.edit();
        editor.putString("first", value);
    ...

        editor.commit();        

        // Close the activity
        Intent i = new Intent(Login.this, MainMenu.class);
         startActivity(i);
    }           

しかし、FCを取得します。 SharedPreferencesの実装方法に何か問題がありますか?

32
bunbun

あなたのコードはそのfirst_time_check()を決して呼び出さないので、ユーザーが戻った場合の自動転送は機能しません。

onCreate()でできます

_protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    first_time_check();

    setContentView(R.layout.configure);

    ...}
_

したがって、新しいユーザーの場合、first_time_check()はログインページに転送します。そうでない場合は、現在のレイアウトが表示され、このページを続行できます。

14
Heiko Rupp

共有設定を使用しています。それはいいです。

このリンクには小さな例があります。それはおそらく問題を解決するでしょう。

http://developer.Android.com/guide/topics/data/data-storage.html

基本的に、保存された値を読むことはありません。保存してからコミットします。しかし、あなたがそれを読んでいるコードはありません。読んだ場合にのみ、どのアクティビティを起動する必要があるかを決定できます。これを解決するには、first_time_check()を呼び出す必要があります。

お役に立てば幸いです。

5
Andrew Anderson

OnSaveInstanceState()メソッドで詳細にログを保存し、アクティビティの再開時にログを復元できます。たとえば、onRestore()内。

1
vinoth

これには2つの方法があります。 1つはグローバル変数に保存する方法で、もう1つは共有設定にデータを保存する方法です。 this の例を参照してください。

1
Aliti