从另一个设置Activity的背景

时间:2014-05-26 12:59:02

标签: android background onclick

我正在尝试使用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
        }
    });
}

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您获取另一个活动的实例并从另一个活动中修改它是错误的:

public static MainActivity getInstance(){
    return activityA;
}

您必须obey the Activity lifecycle

如何设置其他活动背景的方法是为背景颜色创建共享首选项值,并在Activity的onCreate方法中使用它。