我已经被这个问题困扰了几个小时。所以就在这里。我有 2 种不同的活动。第一个有一个带有以下选项的菜单:蓝色、红色、绿色、橙色、紫色。一旦我单击其中一个,第一个 Activity 的 ActionBar 的背景颜色就会毫无问题地发生变化。现在,当我也尝试为第二个活动做这件事时,问题就开始了。因此,换句话说,只需单击单个 Activity 中菜单中的选项,即可更改两个 Activity 中的两个 ActionBars 背景颜色。
public class MainActivity extends Activity {
private static String Hex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button all_notes= (Button) findViewById(R.id.All_Notes);
all_notes.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent(MainActivity.this,AllNotes.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
ActionBar bar = getActionBar();
switch (item.getItemId()) {
case R.id.action_search:
Toast.makeText(this, Hex, Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings:
Intent intent_1= new Intent(MainActivity.this,Settings.class);
startActivity(intent_1);
break;
case R.id.blue:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0099cc")));
Hex="#0099cc";
break;
case R.id.pruple:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#9933cc")));
Hex="#9933cc";
break;
case R.id.orange:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFBB33")));
Hex="#FFBB33";
break;
case R.id.red:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#CC0000")));
Hex="#CC0000";
break;
case R.id.green:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#669900")));
Hex="#669900";
break;
default:
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFBB33")));
Hex="#FFBB33";
break;
}
return true;
}
public String getHex()
{
return Hex;
}
}
public class Settings extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
MainActivity MA=new MainActivity();
ActionBar bar=getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(MA.getHex())));
}
}
所以在这里你可以看到我有 Mainactivity 处理菜单并允许用户输入选择颜色和 Setting 通过 getHex 方法获取用户选择的颜色并更改其各自的 ActionBar 背景。这显然是行不通的。我试图找到一个简单而漂亮的代码,可以在没有成功的情况下做到这一点。欢迎任何帮助。