我正在尝试使用getInstance将ActivityB的背景设置为AcitivtyA,但它只显示Toast消息,每当转回ActivityA时,都没有变化。
我在ActivityA中有这个:
private static MainActivity activityA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activityA = this;
}
public static MainActivity getInstance(){
return activityA;
}
public void setLeavesBackground() {
FrameLayout mainFrameLyt = (FrameLayout) findViewById(R.id.mainFrameLayout);
mainFrameLyt.setBackgroundColor(Color.parseColor("#00FF00"));
Toast.makeText(getBaseContext(), "New style applied", Toast.LENGTH_SHORT).show();
}
这在我的ActivityB中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_style);
ImageButton leavesBtn = (ImageButton) findViewById(R.id.leavesBtn);
leavesBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.getInstance().setLeavesBackground(); //call myFunction using activityA
}
});
}
我该怎么办?
答案 0 :(得分:1)
您获取另一个活动的实例并从另一个活动中修改它是错误的:
public static MainActivity getInstance(){
return activityA;
}
您必须obey the Activity lifecycle
如何设置其他活动背景的方法是为背景颜色创建共享首选项值,并在Activity的onCreate方法中使用它。