在Android中使用微调器更改布局
我正在尝试根据微调器中的选择更改活动的布局。 但是在第一次选择之后,微调器变成白色,我无法决定另一个选择。 我使用的代码如下所示:在Android中使用微调器更改布局,android,android-layout,android-spinner,Android,Android Layout,Android Spinner,我正在尝试根据微调器中的选择更改活动的布局。 但是在第一次选择之后,微调器变成白色,我无法决定另一个选择。 我使用的代码如下所示: public class MainActivity extends Activity implements OnItemSelectedListener { Spinner spinner; String[] options = { "Modulo1", "Modulo2" }; @Override protected void onCreate(Bundle
public class MainActivity extends Activity implements OnItemSelectedListener {
Spinner spinner;
String[] options = { "Modulo1", "Modulo2" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, options);
adapter_state
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter_state);
spinner.setOnItemSelectedListener(this);
}
int check = 0;
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
check = check + 1;
if (check > 1) {
int selState = spinner.getSelectedItemPosition();
switch (selState) {
case 0:
setContentView(R.layout.activity_main);
break;
case 1:
setContentView(R.layout.activity2_main);
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
//
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public类MainActivity扩展活动实现OnItemSelectedListener{
纺纱机;
字符串[]选项={“module1”,“module2”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.spinner);
ArrayAdapter_state=新的ArrayAdapter(此,
android.R.layout.simple\u微调器\u项目,选项);
适配器状态
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spinner.setAdapter(适配器状态);
spinner.setOnItemSelectedListener(此);
}
整数检查=0;
已选择公共位置(AdapterView父对象、视图、整型位置、,
长id){
检查=检查+1;
如果(检查>1){
int selState=spinner.getSelectedItemPosition();
开关(selState){
案例0:
setContentView(R.layout.activity_main);
打破
案例1:
setContentView(R.layout.activity2_main);
打破
}
}
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
//
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
}
有什么建议吗?
谢谢您所指的微调器正在您的第一个活动中。替换内容后,微调器不再存在。如果在第二个布局中有另一个微调器,则必须重新连接它并再次设置侦听器。 基本上,你必须在每次setContentView之后运行onCreate工具
顺便说一句,不管你想做什么,这可能不是你要做的事情。要显示另一个完整布局,最好使用另一个活动。为什么需要此检查?如果您的意思是,只有在从下拉列表中选择项目后,检查变量才用于显示所选项目。您只需使用Spinner override方法中的int变量即可。谢谢您的回答。我发现不建议在同一活动中更改布局。也许最好的解决方案应该是尽可能创建一个listview,并为每个选项创建一个具有不同布局的活动。你怎么想?取决于你想做什么。你可以这样做,有一个带有选项列表的活动,然后从那里打开不同的活动。或者您可能想查看片段,这些片段是活动中的UI部分,可以在运行时替换。