【问题标题】:How to save background color from another acivity in android java如何在android java中保存另一个活动的背景颜色
【发布时间】:2021-02-20 06:04:37
【问题描述】:

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

当用户点击 MainActivity 上的backgroundChange 按钮时,它会移动到 BackgroundActivity。然后有几种不同的颜色可供选择。用户在 BackgroundActivity 上选择颜色后单击 Save 按钮后,它将返回 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);
            }
        });
    }
}

【问题讨论】:

  • 据我了解,您想保存当前背景,并将其用于其他活动?我说的对吗?
  • @A.R.B.N 是的。 MainActivity 上有一个按钮。如果它点击,那么它会转到BackgroundActivity。然后有一些选项可以在 BackgroundActivity 上更改颜色。当用户单击 BackgroundActivity 上的 Save 按钮时,我想保存它更改颜色并返回 MainActivity 并继续使用更改后的颜色。
  • @A.R.B.N 我编辑了我的问题以使其清楚。

标签: java android sharedpreferences


【解决方案1】:

您可以使用捆绑包跨 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`
  }

【讨论】:

  • 很抱歉,我无法理解如何在我的项目中使用此代码。你能解释一下我如何在我的代码上使用它吗?我尝试用它编写代码,但不知道该放在哪里以及如何放置。
  • 您应该在 onClick 方法中使用在 BackgroundActivity 中保存数据,并在 intent.putExtra(KEY, "color code"); 中传递颜色代码;然后在 MainActivity 中使用 OnCreate 中的检索数据,最后,strData 是您选择的颜色代码。随心所欲地用您的颜色代码做事。
  • 感谢您详细解释。很抱歉再次问..你是什么意思“用你的颜色代码做你想做的事”? BackgroundAcivity 上的代码正在重复,因为有五种不同的颜色选项。在dynamicBg.setBackgroundResource(R.drawable.bg_blue); 之后或内部我需要做一些代码吗?
  • 我的意思是你将你的颜色代码(例如#3498db)保存在一个包中,或者如果你想保存多个颜色,你仍然可以使用具有不同键的包,并将键作为颜色主活动中的代码并使用代码设置您喜欢的每个视图组件,
  • 有五种颜色可供选择。如何为颜色保存不同的键? github.com/bluetree007/color/tree/main我在这里放了关于xml和activity的完整代码
猜你喜欢
  • 1970-01-01
  • 2019-01-12
  • 2021-11-26
  • 2017-02-02
  • 2013-10-19
  • 1970-01-01
  • 2017-07-02
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多