2016-06-20 3 views
0

私はこのサイトで見たことがありますが、まだ幸運はありませんでした。私は、ユーザーがログインしているかどうかをチェックするMainActivityを持っています。 ActiveThreadFragmentというフラグメントを起動していなければ、ログイン画面を起動します。その後、ユーザーは資格情報を入力してサインインします。これは進捗状況を読み込んで、「Login Successful」というトーストで再度ログイン画面を表示します。私は間違って何をしていますか?おそらく本当に明白ですが、私のコードを見てください。アクティビティの読み込み回数2回onClick

MainActivity

if (PreferenceConnector.readString(this, "authToken") == null) { 
     Intent intent = new Intent(this, FirstLoginActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     startActivity(intent); 
    } else { 
     initUI(); 
    } 

    if (PreferenceConnector.readString(this, "authToken") != null && 
      PreferenceConnector.readString(this, "authToken").equalsIgnoreCase("skip")) { 
     SharedPreferences.Editor editor = PreferenceConnector.getEditor(this); 
     editor.clear(); 
     editor.commit(); 

    } 
} 

FirstLoginActivity

private void initUI() { 
    mLoginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final ProgressDialog progressDialog = ProgressDialog.show(FirstLoginActivity.this, 
        "Please wait", "Checking credentials", true); 
      progressDialog.setCancelable(true); 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         if (isDataValid()) { 
          sendCredentials(); 
          Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
          startActivity(intent); 
         } else { 
          Toast.makeText(getApplicationContext(), "Login Failed - Invalid Username and/or " + 
            "Password", Toast.LENGTH_LONG).show(); 
         } 
         Thread.sleep(20000); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
        progressDialog.dismiss(); 

       } 
      }).start(); 

     } 
    }); 

    mSkipText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      PreferenceConnector.writeString(getApplicationContext(), "authToken", "skip"); 
      Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
      startActivity(intent); 

     } 
    }); 

} 

AndroidManifest

<activity android:name=".activity.FirstLoginActivity" 
     android:label="@string/app_name" 
     android:launchMode = "singleInstance"> 

</activity> 

感謝事前にD

+0

ウィッヒアクティビティを書く

SharedPreferences myPrefs = getActivity().getPreferences(Context.MODE_PRIVATE); String authToken = myPrefs.getString("authToken",null); 

読みますか? –

+0

@BOUTERBIAT FirstLoginActivityを – BilalMH

+0

'PreferenceConnector.readString(this、" authToken ")'を 'null'以外のものに設定したことがありますか?他のアクティビティに戻ると思われますか?また、 'Thread.sleep(20000);'は無関係です。チェックが完了した後、ダイアログが閉じられる前に20秒間スリープ状態になっています。 –

答えて

0

を試してみてくださいSharedPreferences私はこのPreferenceConnectorクラスをどこから入手したのかはっきりしていませんが、正しく保存しているかどうかは疑問です。

二回ロードされ

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putString("authToken", newToken); 
editor.commit() 
関連する問題