如何保存 android java 中另一个活动的背景颜色

How to save background color from another acivity in android java

我想让用户在 BackgroundActivity 中选择带有动画的背景颜色,并将更改后的背景颜色保存到 MainActivity 中。

当用户单击 MainActivity 上的 backgroundChange 按钮时,它会移动到 BackgroundActivity。然后有几种不同的颜色可供选择。用户在 BackgroundActivity 上选择颜色后单击“保存”按钮后,它将返回到 MainAcitivity。我的问题是我不知道如何将更改后的背景颜色从 BackgroundAcivity 保存到 MainAcivity。

作为一个初学者,我对SharedPreferences的使用不是很了解。 我检查了几个视频并搜索了许多关于它的问题数小时,但我仍然无法弄清楚如何在我自己的代码中正确使用 SharedPreferences。

BackgroundAcivity 很长,我只放第一部分。你能告诉我如何保存这个背景变化吗?

MainActivity

public class MainActivity extends AppCompatActivity {

    Button backgroundChange;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        backgroundChange = findViewById(R.id.backgroundChange);
        backgroundChange.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, BackgroundActivity.class);
                startActivity(intent);
            }
        });

    }
}

BackgroundActivity

public class BackgroundActivity extends AppCompatActivity {

    Button btn_blue, btn_purple, btn_orange, btn_save;
    View holderBg, dynamicBg;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_background);

        btn_save = findViewById(R.id.btn_save);
        btn_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(BackgroundActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });


        btn_blue = findViewById(R.id.btn_blue);
        btn_purple = findViewById(R.id.btn_purple);
        btn_orange = findViewById(R.id.btn_orange);

        holderBg = findViewById(R.id.holderBg);
        dynamicBg = findViewById(R.id.dynamicBg);

        //set the first-time background
        holderBg.setBackgroundResource(R.drawable.bg_blue);
        holderBg.setScaleY(3);
        holderBg.setScaleX(3);

        //set the scale of button clicked
        btn_blue.setScaleY(1.5f);
        btn_blue.setScaleX(1.5f);

        btn_blue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //scale animation
                btn_blue.animate().translationY(20).scaleX(1.5f).scaleY(1.5f).setDuration(800).start();

                //default the scale buttons
                btn_purple.animate().translationY(0).scaleX(1).scaleY(1).setDuration(350).start();
                btn_orange.animate().translationY(0).scaleX(1).scaleY(1).setDuration(350).start();

                //change the background
                dynamicBg.animate().scaleX(3).scaleY(3).setDuration(800).start();
                dynamicBg.setBackgroundResource(R.drawable.bg_blue);

                //change color of button
                btn_save.setTextColor(Color.parseColor("#3498db"));


                //timer for change the holderbg
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        holderBg.setScaleX(3);
                        holderBg.setScaleY(3);
                        holderBg.setBackgroundResource(R.drawable.bg_blue);
                        dynamicBg.setScaleX(0);
                        dynamicBg.setScaleY(0);
                    }
                }, 850);
            }
        });
    }
}

您可以使用捆绑包在 Activity 之间传输数据。

  • 正在保存数据

Intent intent = new Intent(context, YourActivity.class);
intent.putExtra(KEY, "your value here");
startActivity(intent);

然后检索数据。

Intent intent = getIntent();
 if (intent != null ) { //Null Checking
    String strData= intent.getStringExtra(KEY);
    // do your work with `strData`
  }