我使用以下代码设置应用的背景颜色:
RelativeLayout rl = (RelativeLayout)findViewById(R.id.layout);
rl.setBackgroundColor(Color.RED);
如果不使用XML,我怎么能把它延续到这个之后的下一个活动,因为它并不总是颜色RED。这取决于用户的选择。但是一旦用户选择了RED,我希望这种颜色能够延续到下一个活动。有没有办法解决这个问题而不为所有活动人员做这样的事情。
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("Color", "RED");
startActivity(intent);
然后在下一个活动中使用Extra来设置颜色。有没有办法可以在用户更改之前为所有以下活动设置它?
感谢您的帮助。
答案 0 :(得分:0)
int
格式而不是String
setBackgroundColor() takes a color in numeric form (e.g., 0xFFFF0000 for red)
所以你可以这样做:
假设从class A
发送一个int变量到class B
int bgColor=Color.RED; <---Change It with whatever you want(but should be numeric)
Intent bgIntent = new Intent(Background.this, MainScreen.class);
bgIntent.putExtra("background", bgColor);
startActivity(bgIntent);
和B级
Intent bgIntent = getIntent();
bgGlobal = bgIntent.getExtras().getInt("background",-1);
if(bgGlobal != -1)
{
DetailsLayout.setBackgroundResource(Color.parseColor(bgGlobal));
}
else
{
DetailsLayout.setBackgroundResource(R.color.a1);
}
了解更多信息,请参阅this
答案 1 :(得分:0)
我认为您需要获得该颜色的#Code并使用
发送值
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("Color", "#Code");
startActivity(intent);
在下一个活动中..
RelativeLayout rl = (RelativeLayout)findViewById(R.id.layout);
rl.setBackgroundColor(Color.parseColor(intent.getExtra("Color")));
答案 2 :(得分:0)
将背景颜色的设置放在单个类中,比如说
public class ColorHolder {
public static ColorHolder instance=null;
private int color;
public static ColorHolder getInstance(){
if(instance==null){
instance=new ColorHolder();
}
}
public int getColor(){
return color;
}
public void setColor(int c){
color=c;
}
}
然后创建一个Activity的子类,比如说
public class ColoredActivity extends Activity{
protected void onCreate(Bundle s){
super.onCreate(s);
RelativeLayout rl = (RelativeLayout)findViewById(R.id.layout);
rl.setBackgroundColor(ColorHolder().getInstance().getColor());
}
}
然后,所有想要应用此设置的活动都应该扩展这个&#34; ColoredActivity&#34;