可以使用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
請澄清您的問題。 –
我想通過按列表視圖上的項目來獲得新的活動。我有一個顏色列表,點擊我需要在背景上使用相同顏色的新活動中的一個項目 –