我的问题如下:我有一个微调器作为我的mainactivity中的菜单,我也想在我的其他活动中使用相同的微调器,所以我可以保存一些代码行。我怎么能实现这一目标?我会发布代码,还是有更好的解决方案来做到这一点?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Spinner spinner = (Spinner) findViewById(R.id.comboCasino);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.comboCasino, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// this will be called when you select any item in this spinner
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
// get the text at that position
String Text = spinner.getSelectedItem().toString();
if(Text.equals("Wien Simmering")) {
Intent NewPost = new Intent(StartingPoint.this,Simmering.class);
startActivity(NewPost);
}
if(Text.equals("Wien Lugner City")) {
Intent NewPost = new Intent(StartingPoint.this, LugnerCity.class);
startActivity(NewPost);
}
if(Text.equals("Gmunden")) {
Intent NewPost = new Intent(StartingPoint.this, Gmunden.class);
startActivity(NewPost);
}
if(Text.equals("Salzburg")) {
Intent NewPost = new Intent(StartingPoint.this, Salzburg.class);
startActivity(NewPost);
}
if(Text.equals("Linz")) {
Intent NewPost = new Intent(StartingPoint.this, Linz.class);
startActivity(NewPost);
}
if(Text.equals("Saalbach")) {
Intent NewPost = new Intent(StartingPoint.this, Saalbach.class);
startActivity(NewPost);
}
if(Text.equals("Innsbruck")) {
Intent NewPost = new Intent(StartingPoint.this, Innsbruck.class);
startActivity(NewPost);
}
if(Text.equals("Reutte")) {
Intent NewPost = new Intent(StartingPoint.this, Reutte.class);
startActivity(NewPost);
}
if(Text.equals("Bregenz")) {
Intent NewPost = new Intent(StartingPoint.this, Bregenz.class);
startActivity(NewPost);
}
if(Text.equals("Kufstein")) {
Intent NewPost = new Intent(StartingPoint.this, Kufstein.class);
startActivity(NewPost);
}
if(Text.equals("Bratislava")) {
Intent NewPost = new Intent(StartingPoint.this, Bratislava.class);
startActivity(NewPost);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
这里是xml
<string-array name="comboCasino">
<item>Filiale</item>
<item>Wien Simmering</item>
<item>Wien Lugner City</item>
<item>Gmunden</item>
<item>Salzburg</item>
<item>Linz</item>
<item>Saalbach</item>
<item>Innsbruck</item>
<item>Reutte</item>
<item>Bregenz</item>
<item>Kufstein</item>
<item>Bratislava</item>
</string-array>
答案 0 :(得分:1)
我可以想到几个可能的解决方案:
将您的微调器添加到ActionBar
。
为您的所有活动创建基类。此基类包含Spinner
。
使用适当的逻辑创建自定义组件。将此组件添加到需要该菜单的每个活动。
答案 1 :(得分:0)
你做得对。实际的初始化并不是那么糟糕,因为你只是声明Spinner
,制作适配器,并应用xml属性(如果用代码制作它们,则不需要它们) ),然后你给它一个适配器。您的问题是OnItemSelectedListener
中的冗长代码。
您的初始化权限正确,我只需将if
更改为switch
,就像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Spinner spinner = (Spinner) findViewById(R.id.comboCasino);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.comboCasino, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// this will be called when you select any item in this spinner
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
// get the text at that position
String Text = spinner.getSelectedItem().toString();
switch(position) {
case 0:
Intent NewPost = new Intent(StartingPoint.this, Simmering.class);
startActivity(NewPost);
case 1:
Intent NewPost = new Intent(StartingPoint.this, LugnerCity.class);
startActivity(NewPost);
case 2:
Intent NewPost = new Intent(StartingPoint.this, WhateverTown.class);
startActivity(NewPost);
.
.
.
case 10:
...........
......
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
自动传递给名为OnItemSelectedListener
的{{1}}的int标记了所单击列表上的位置,因此您可以使用此代替许多position
语句。