私の活動の 1 つで、ImageButton
クリックすると を使用してバックグラウンド リソースが変更されますsetBackgroundResource()
。そのアクティビティでは正常に動作しますが、そのアクティビティを離れて戻ってくると、ボタンは XML で設定されたデフォルトの背景に戻ります。ボタンが再度クリックされるまで、バックグラウンド リソースを何かに永続的に設定する方法はありますか?
5 に答える
画像ボタンの値を静的変数または SharedPreferences に保存する必要があります。
たとえば、変数を宣言します
public static int bgresource;
今すぐimgボタンをクリック
if(something) {
bgresource = R.drawable.img1
} else {
bgresource = R.drawable.img2
}
mylayout.setBackgroundResource(bgresource);
また、アクティビティの onResume() で次のことを行います。
mylayout.setBackgroundResource(bgresource);
SharedPreferences を使用します。
背景を変更する場合:
getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_1").commit();
また
getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_2").commit();
等々。これにより、文字列が保存され、現在の背景が sharedPreferences に記述されます。
onCreate-Method に以下を入れる必要があります。
String back = getSharedPreferences("background", MODE_PRIVATE).getString("background");
これにより、「background_nr_x」が後ろに表示されます。背景を選択できるようになりました。
if (back.equals("background_nr_1") { // set the Background associated with nr_1
else if (.... "nr_2") ...
注: これにより、アプリが閉じられていても、現在選択されている背景が復元されます。
背景として使用する画像の URL/ID を SharedPreferences に保存し、アクティビティが作成されるたびに必ず設定してください。それ以外の場合は、XML ファイルで指定された背景が、次回アクティビティが作成されるときに使用されます。
ActivityonResume()
メソッドを上書きする必要があります。アクティビティまたはボタンの状態 (押されているか押されていないか) を維持し、onResume()
メソッドでこの状態を確認して背景を変更します。
次のようなトリックを使用できます。
//outside the onCreate:
boolean resourceIsSet = false;
//inside the onCreate:
if(!resourceIsset) {
setBackgroundResource();
resourceIsset= true;
}
または、他の推奨されるようにSharedPreferencesを使用できます