Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android studio保存上次选择的背景图像_Android - Fatal编程技术网

android studio保存上次选择的背景图像

android studio保存上次选择的背景图像,android,Android,我创建了一个简单的代码来更改按钮单击时的图像背景,但问题是在更改背景图像并关闭应用程序并再次打开后,背景图像将返回默认图像,我希望保存更改后的图像背景并在下次启动我的应用程序时显示它 这是我的密码: button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int bg = 0;

我创建了一个简单的代码来更改按钮单击时的图像背景,但问题是在更改背景图像并关闭应用程序并再次打开后,背景图像将返回默认图像,我希望保存更改后的图像背景并在下次启动我的应用程序时显示它

这是我的密码:

 button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            int bg = 0;
            if (x[0] == 5) x[0] = 1;
            if (x[0] == 1) bg = R.drawable.bg1;
            if (x[0] == 2) bg = R.drawable.bg2;
            if (x[0] == 3) bg = R.drawable.bg3;
            if (x[0] == 4) bg = R.drawable.bg4;
            if (x[0] == 5) bg = R.drawable.bg5;

            layout.setBackgroundResource(bg);
            x[0]++;
        }


});

我建议您创建一个xml或json文件来存储图像数组,并在更改时重新排列此列表 下面的示例显示了一个汽车列表,每次我更改主汽车列表的顺序时,它都是列表中的第一个

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="list_sorted_data">[3,1,2]</string>
</map>

[3,1,2]
您所做的工作示例请参见实际操作
如果看不到所有内容,则转到2分钟40秒。

您可以使用SharedReference保存和存储图像文件的id。。启动应用程序时,从活动的onCreate()中的共享首选项中获取此int值,并在每次更改时进行设置

SharedPreferences mPreferences
int currentBackground;

onCreate() {

    mPreferences = getSharedPreferences("MySahredPrefs", MODE_PRIVATE);

    int currentBackground = sharedPrefs.getInt("MyBackground", R.drawable.bg1); // <<< getting the background from the shared preference

    layout.setBackgroundResource(currentBackground);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int bg = 0;
            if (x[0] == 5) x[0] = 1;
            if (x[0] == 1) bg = R.drawable.bg1;
            if (x[0] == 2) bg = R.drawable.bg2;
            if (x[0] == 3) bg = R.drawable.bg3;
            if (x[0] == 4) bg = R.drawable.bg4;
            if (x[0] == 5) bg = R.drawable.bg5;

            layout.setBackgroundResource(bg);

            SharedPreferences.Editor preferencesEditor = mPreferences.edit();
            preferencesEditor.putInt("MyBackground", bg); // <<<<<<<< setting the background to the shared preference
            preferencesEditor.apply();

            x[0]++;
        }
    });
}
SharedReferences mPreferences
背景;
onCreate(){
mPreferences=getSharedReferences(“MySahredPrefs”,MODE_PRIVATE);

int currentBackground=sharedPrefs.getInt(“MyBackground”,R.drawable.bg1);//据我所知,您应该能够通过共享首选项轻松完成这项工作

然后在启动时检索int并翻转背景

  SharedPreferences preferences;
  SharedPreferences.Editor editor;
        @Override
        protected void onCreate(bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myactivity);

        preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        editor = preferences.edit();

        //I used a separate method to keep clutter out of onCreate but its up to you, doesn't matter. 
        setBackground();
        button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    setBackground();
                }

        });
    }
    //Here we just grab the id, and assign the background. 
        public void setBackground(){
             int id = preferences.getInt("backgroundid",1);
             int bg = 0;
             if (id == 1) bg = R.drawable.bg1;
             if (id == 2) bg = R.drawable.bg2;
             if (id == 3) bg = R.drawable.bg3;
             if (id == 4) bg = R.drawable.bg4;
             if (id == 5) bg = R.drawable.bg5;

             layout.setBackgroundResource(bg);
             editor.putInt("backgroundid",id++);
             editor.commit();


    }