Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中使用微调器更改布局_Android_Android Layout_Android Spinner - Fatal编程技术网

在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部分,可以在运行时替换。