这是我的第一个活动,我想通过在另一个活动上按按钮来更改按钮颜色
public void colorchangeOnfirstActivity(){
Button btnA = (Button) findViewById(R.id.asmat_btn);
btnA.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
}
这是我的第二个活动,第二个活动按钮在其中。
Button btnB = (Button) findViewById(R.id.rose_btn);
btnB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
asmat_activity secondActivity = new asmat_activity();
asmat_activity.colorchangeOnfirstActivity();
}
});
答案 0 :(得分:1)
活动绝不应直接相互交互。通常,如果您想对另一个Activity中的某个动作做出响应,则应使用Activity Result API。
例如,您可以使用请求代码启动辅助活动:
// The request code can be any integer value you wish
startActivityForResult(activityIntent, MY_REQUEST_CODE);
然后在新的活动中,您可以将结果设置为传递回启动该活动的活动。就您而言,类似:
btnB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// This will deliver the result to the requesting Activity
setResult(RESULT_OK);
finish();
}
}
然后在第一个活动中,您将覆盖onActivityResult
来处理结果:
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == MY_REQUEST_CODE) {
btnA.setBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}