可以使用enum
与HashMap
为颜色名称和其十六进制代码存储,然后通过颜色的十六进制代码作为String
为第二Activity
经由Intent
:
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<String> allColors= new ArrayList<>(8);
allColors.add(Color.Blue.toString());
allColors.add(Color.Yellow.toString());
allColors.add(Color.Green.toString());
allColors.add(Color.Red.toString());
allColors.add(Color.Grey.toString());
allColors.add(Color.Black.toString());
allColors.add(Color.Orange.toString());
allColors.add(Color.Purple.toString());
final ListView listView = (ListView)findViewById(R.id.colorList);
ArrayAdapter<String> myAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, android.R.id.text1, allColors);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("BackgroundColor", Color.fromString(((TextView)view).getText().toString()).getHexCode());
startActivity(intent);
}
});
}
public enum Color {
Blue("#0000FF"),
Yellow("#FFFF00"),
Green("#00FF00"),
Red("#FF0000"),
Grey("#808080"),
Black("#000000"),
Orange("#FFA500"),
Purple("#800080");
Color(String color) {
this.colourCode = color;
}
final String colourCode;
private final static Map<Color, String> colorNames = new HashMap<>(8);
static {
colorNames.put(Blue, "Blue");
colorNames.put(Yellow, "Yellow");
colorNames.put(Green, "Green");
colorNames.put(Red, "Red");
colorNames.put(Grey, "Grey");
colorNames.put(Black, "Black");
colorNames.put(Orange, "Orange");
colorNames.put(Purple, "Purple");
}
public String getHexCode() {
return colourCode;
}
@Override
public String toString() {
return colorNames.get(this);
}
public static Color fromString(String name) {
for (Color key : colorNames.keySet()) {
if (colorNames.get(key).equals(name)) {
return key;
}
}
return null;
}
}
}
SecondActivity.java
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
String backgroundColor = "#FFFFFF";
Intent intent = getIntent();
if (intent != null) {
backgroundColor = intent.getStringExtra("BackgroundColor");
}
getWindow().getDecorView().setBackgroundColor(Color.parseColor(backgroundColor));
}
}
并且不要忘记添加SecondActivity
到AndroidManifest.xml
请澄清您的问题。 –
我想通过按列表视图上的项目来获得新的活动。我有一个颜色列表,点击我需要在背景上使用相同颜色的新活动中的一个项目 –