7

もうどうしたらいいのかわからない

android 3.0以降では正常に動作しているようですが、android 2.3.3では、アプリケーションを起動するたびに、ユーザー名/パスワードを再度要求されます。

共有設定を使用しています。

設定を保存する方法は次のとおりです。

        SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("username", username).commit();
        editor.putString("password", password).commit();

そして、これが私がそれらを読む方法です:

    SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", Context.MODE_PRIVATE);
    String username = preferences.getString("username", "");
    String password = preferences.getString("password", "");

また、次のコードを使用して設定を保存しようとしました。

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("username", username).commit();
        editor.putString("password", password).commit();

そして、このコードでそれらを読んでください:

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
    String username = preferences.getString("username", "");
    String password = preferences.getString("password", "");

しかし、それも機能しません。

問題は、アプリケーションを再起動する前に、それらがまだ存在していることを確認できることです。ただし、再起動するとすぐに、ユーザー名に「」(空の文字列)、パスワードに「」が表示されます。

任意のアイデアをいただければ幸いです

4

4 に答える 4

2
public class MyApplication extends Application {
    private static MyApplication instance;

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate() called");
    }

    public MyApplication() {
        super();
        Log.d(TAG, "Constructor called");
        instance = this;
    }


    public static MyApplication getApplication() {
        if (instance == null) {
            instance = new MyApplication();
        }
        return instance;
    }
}

そして使用法:

MyApplication.getApplication().getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE)
于 2013-03-03T07:02:56.517 に答える
1

これを試して:

 SharedPreferences preferences = context.getSharedPreferences("YOUR_TAG", 0);
 String username = preferences.getString("username", "");
 String password = preferences.getString("password", "");


  SharedPreferences.Editor editor = preferences.edit();
    editor.putString("username", username).commit();
    editor.putString("password", password).commit();

ここで、contextはアプリのコンテキストです。

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


        context = this;
于 2013-03-03T07:00:50.493 に答える
1

2つのオプションがあります:

  1. アクティビティのライフサイクル中に共有設定値を取得します。

  2. .clear前に電話する.commit

私の答えを参照してください:

Androidの再起動後のカスタムウィジェットのAndroid永続チェック可能メニュー

于 2016-05-03T08:44:17.667 に答える
0

何が起こったのか正確にはわかりませんが、再起動した後、エミュレータの問題はなくなりました。

時間を無駄にしてすみません

于 2013-03-03T08:29:33.120 に答える