0

独自のSharedPreferencesにクレデンシャルを保存するログインアクティビティがあります。それから私はそれらを読むために2つのゲッターを追加しました

public String getUsername() {
  return getPreferences(MODE_PRIVATE).getString("#username", null);
}

しかし、私がこのように呼ぶと、これはNPEをスローします

String mUser = (new Login()).getUsername();

アクティビティは、単純なコンストラクターの呼び出しの後、未完了の状態であるかのように、その設定を読み取ることができないようです。関連するトピックをたくさん読みましたが、解決策を見つけることができませんでした。基本的に、アプリケーション内のアクティビティ間でこれらの資格情報を共有する必要があります

4

1 に答える 1

4

それはあなたがアクティビティを作成する方法ではありません。を呼び出すだけnew Login()では、共有設定にアクセスするための正しいコンテキストがありません。また、またはnewを拡張するクラスを呼び出すことは絶対にしないでください。それはAndroidクラスがどのように機能するかではありません。ActivityService

アクティビティへの参照を取得する方法が必要になります。

しかし、あなたのデザインは正しくないようです。別のアクティビティの設定を取得する必要はありません。その場合は、代わりにdefaultSharedPreferncesに入れてください。

于 2011-01-06T20:57:13.147 に答える