0

私は Android アプリに取り組んでおり、アプリは男性用と女性用の 2 つに分かれています。ユーザーは、アクティビティのどの部分を公開するかを選択します。例えば、ユーザーが男性の場合は男性のパートを選択し、女性の場合は女性のボタンをクリックすると女性用のページが表示されます。

ユーザーの迷惑にならないように、チェック ボックスをオンにして、次回は自分の選択を記憶するようにしました。ごくありふれたこと...

これに共有設定を使用しようとしましたが、うまくいきません。アプリを開くたびに質問されます。コードは次のとおりです。

質問するアクティビティ

View checkBoxView = View.inflate(this, R.layout.activity_menu, null);
    CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox);
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                SharedPreferences.Editor prefEditor = getPreferences(MODE_PRIVATE).edit();
                prefEditor.putString("Remember", "Checked");
                prefEditor.commit();
            }
        }
});

質問をするか、選択したアクティビティを開く前に決定するスプラッシュ アクティビティ

SharedPreferences sp = getPreferences(MODE_PRIVATE);
                    String str1 = sp.getString("Remember", "");
                    String str2 = sp.getString("Hacc", "");

                    if (str1 == "") {
                        Intent menuIntent = new Intent(
                                "com.uygulama.hacc.MenuActivity");
                        startActivity(menuIntent);
                    }
                    else{
                        if(str2 == "Hacc" ){
                            Intent mainIntent = new Intent(
                                    "com.uygulama.hacc.HaccActivity");
                            startActivity(mainIntent);
                        }
                        else{
                            Intent mainIntent = new Intent(
                                    "com.uygulama.hacc.UmreActivity");
                            startActivity(mainIntent);
                        }
                    }

私はAndroidが初めてなので、助けていただければ幸いです。

4

3 に答える 3

1

アクティビティ間で設定を共有するには、getPreferences の代わりに共有設定を使用する必要があります。

Android ドキュメントから: http://developer.android.com/reference/android/app/Activity.html

アクティビティの永続状態はメソッド getPreferences(int) で管理され、アクティビティに関連付けられた名前と値のペアのセットを取得および変更できます。複数のアプリケーション コンポーネント (アクティビティ、レシーバー、サービス、プロバイダー) で共有される設定を使用するには、基になる Context.getSharedPreferences() メソッドを使用して、特定の名前で保存されている設定オブジェクトを取得できます。(アプリケーション パッケージ間で設定データを共有することはできないことに注意してください。そのためには、コンテンツ プロバイダーが必要になります。)

于 2013-09-24T11:46:21.177 に答える
1

共有設定の書き込みと読み取りに 2 つの異なるアクティビティを使用していると思います。getPreferencesから呼び出すActivityと、そのアクティビティに関連付けられた設定が開きます。設定へのアクセスを次のように変更してみてください。

// read
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String str1 = settings.getString("Remember", "");

// write
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.putString("Remember", "Checked");
editor.commit();

また、文字列を比較するときは、次を使用しますequals

str2.equals("Hacc")

それ以外の場合は、参照を比較します。

于 2013-09-24T11:27:38.217 に答える