0

最初に開始するデフォルトのアクティビティ(アクティビティA)があり、そこからユーザーは別のアクティビティ(アクティビティB)に移動できます。いくつかの作業の後のBでは、ユーザーは共有設定を設定します。次回アプリを起動するときに、sharedpreferenceがnullかどうかをAにチェックインして、Bに移動します。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

onCreate全体をカプセル化します。アプリが起動すると、Aをスキップし、BにNullPointerExceptionのあるレイアウトとFCを表示します。

誰かがこれを経験しましたか?

また

誰かがAをスキップすることについてより良い考えを持っていますか?

4

2 に答える 2

0

私自身の質問に答えるために。onCreateをスキップしたために初期化されなかったため、onDestroyにロケーションリスナーがあり、NullPointerが返されました。

于 2010-07-29T00:27:38.073 に答える
0

さてサイモンあなたは共有設定を使用する必要があります。共有設定でデータを保存します。次に、共有設定のデータを使用するアクティビティで、同じ共有設定のインスタンスを再度取得します。データを取得して使用します。

このコードを通過する

public class Calc extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";

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

       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       boolean silent = settings.getBoolean("silentMode", false);
       setSilent(silent);
    }

    @Override
    protected void onStop(){
       super.onStop();

      // We need an Editor object to make preference changes.
      // All objects are from android.context.Context
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("silentMode", mSilentMode);

      // Commit the edits!
      editor.commit();
    }
} 

おそらくあなたは洞察を得るでしょう

于 2010-07-29T13:14:56.753 に答える