我有两项活动。一个是主要活动,另一个是设置活动。在设置活动中,我正在设置颜色变量。
我希望在主要活动中访问默认颜色,该颜色在设置活动中设置。
我尝试将color声明为静态变量,并在另一个活动中访问它。但问题是如果我直接打开主要活动我没有得到颜色,因为它没有在设置活动中设置。
如何在设置活动中保存此变量?我想将颜色保存为设置活动中事件的默认值。
谢谢。
编辑:
我使用共享首选项尝试了这一点,但仍然没有在主要活动中获得默认颜色。
在设置中:
((GradientDrawable)selectColor.getBackground()).setColor(Color.BLUE);
mColor = Color.BLUE;
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("color",mColor);
editor.commit();
在主要活动中:
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
mColor = sharedPref.getInt("color",0);
答案 0 :(得分:3)
由于您是通过设置活动说的,我假设您有多个设置,并且您希望它们是粘性的(您希望在将来运行应用时记住它们)?如果是这样,请使用共享首选项来存储您想要的颜色,并在主活动的onResume中读取首选项并相应地更改颜色。
如果您不希望它们变粘,请调用startActivityForResult以启动设置活动,并返回设置作为结果。然后主活动应覆盖onActivityResult以获得结果。
答案 1 :(得分:0)
在共享首选项
中保存颜色十六进制代码或颜色名称答案 2 :(得分:0)
你有两个选择:
1-正如Gabe Sechan所说,你应该使用startActivityForResult
startActivityForResult(intent, 2);// Activity is started with requestCode 2
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 2
if(requestCode==2) {
String message=data.getStringExtra("MESSAGE");
textView1.setText(message);
}
}
2-更改颜色时,可以使用Callback方法处理侦听器。
他们两个也和我一起工作。