2012-04-07 7 views
0

ユーザーがログインしたときに2つの文字列を別のアクティビティに保存していますので、別の時間(エンドユーザーの使いやすさ)を使用するようにデータを保存できます。とにかく、私はコードを設定して実行し、文字列は渡されていません。 sharedPreferencesが動作していることを確認するために、私はトーストを設定して、それが帰属する情報と一致するかどうかを確認しました。SharedPreferencesが機能しない

1クラス:

uname = (EditText) findViewById(R.id.txt_username); 
     String username = uname.getText().toString(); 

     pword = (EditText) findViewById(R.id.txt_password); 
     String password = pword.getText().toString(); 

     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("key1", username); 
     editor.putString("key2", password); 
     editor.commit(); 

2級:

private void Test() { 
     // TODO Auto-generated method stub 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     String username = settings.getString("key1", null); 
     String password = settings.getString("key2", null); 
     if(username.equals("irock97")) { 
      Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show(); 
     } 
} 

答えて

1

の代わりに:

if(username =="irock97") 

使用:

if(username.equals("irock97")) 

Stringが等しいかどうかをテストします。 ==では、オブジェクト参照の等価性をテストしています。

+0

こんにちはを呼び出す必要があり、それはまだトーストを表示していない私は、あまりにも自分のコードを更新 – TheBlueCat

+0

@ user1245593。 Toast.makeText(getApplicationContext()、 "yaya"、Toast.LENGTH_SHORT).show(); ' – Luksprog

1

は置換:

username == "irock97" 

で:

username.equals("irock97") 

== 2つのストリング参照メモリ内の同じオブジェクトを参照するかどうかを確認するために使用されます。

equals()は、2つの文字列参照が同じオブジェクトまたは同じ文字列値を持つ2つの異なるオブジェクトを参照しているかどうかを確認するために使用されます。

それに加えて、あなたは文字列参照が最初nullでないかどうかを確認する必要があります。

if(username != null && username.equals("irock97")) 

EDIT:

はまた、あなたがトーストを表示するshow()メソッドを呼び出すために忘れてしまいました:

Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show(); 
+0

こんにちは、まだトーストを表示していません私もコードを更新しました。 – TheBlueCat

+0

@ user1245593編集を参照してください –

+0

ありがとう!別の人がそれを指摘しました、トーストは最終的に働いた。 :)もう一度、あなたの寛大な助けを感謝します。良い一日を。 – TheBlueCat

1

次のことを覚えておいてください。

==参照の平等のためのテスト。

は、値の等しいテストです。

ので

if(username =="irock97") 

と使用変更:

if(username.equals("irock97")) 

をしかし、ヌルの用心!

"=="ヌル文字列を細かく処理しますが、呼び出します "。

String s1 = null; 
String s2 = null; 

s1 == s2; // ok, it's true 
s1.equals(s2); // throws an exception ! 

EDIT:null文字列から例外が発生します」に等しい。 あなたはshow()

Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show(); 
+0

こんにちは、まだトーストを表示していません。私も自分のコードを更新しました。 – TheBlueCat

+0

これを表示するには 'show()'を呼び出す必要があります。 –

+0

例外が発生することはまったく分かりませんでした。Javaに関する新しい規則を知っておくことは常に良いことです。 – TheBlueCat

関連する問題