Android alert.dialog中的微调器崩溃
我有一个警报对话框,其中有一个微调器:Android alert.dialog中的微调器崩溃,android,android-spinner,android-alertdialog,Android,Android Spinner,Android Alertdialog,我有一个警报对话框,其中有一个微调器: LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inf.inflate(R.layout.change_bike_state, null); AlertDialog.Builder changeState = new AlertDialog.Builder(activity); c
LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inf.inflate(R.layout.change_bike_state, null);
AlertDialog.Builder changeState = new AlertDialog.Builder(activity);
changeState.setTitle(bikeName + " " + stateName);
changeState.setView(layout);
String state_data[] = new String[3];
state_data[0]="Alquilada";
state_data[1]="No alquilada";
state_data[2]="Mantenimiento";
Spinner states = (Spinner) layout.findViewById(R.id.bike_states);
ArrayAdapter adapter = new ArrayAdapter(activity,android.R.layout.simple_spinner_item, state_data);
states.setAdapter(adapter);
//positive and negative button
changeState.show();
更改\u bike\u state.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/bike_states"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
如何解决此问题?在
警报对话框中传递活动上下文
而不是活动
。您的对话框无法找到它应该显示在哪个活动上下文中。因此,请尝试以下方法:
View layout = inf.inflate(R.layout.change_bike_state, (ViewGroup)getCurrentFocus());
试试这个
LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inf.inflate(R.layout.change_bike_state, null);
AlertDialog.Builder changeState = new AlertDialog.Builder(YourActivity.this);
changeState.setTitle(bikeName + " " + stateName);
changeState.setView(layout);
String state_data[] = new String[3];
state_data[0]="Alquilada";
state_data[1]="No alquilada";
state_data[2]="Mantenimiento";
Spinner states = (Spinner) layout.findViewById(R.id.bike_states);
ArrayAdapter adapter = new ArrayAdapter(activity,android.R.layout.simple_spinner_item, state_data);
states.setAdapter(adapter);
//positive and negative button
AlertDialog alert = changeState.create();
alert.show();
使用此方法对AlertDialog的布局进行充气
View layout = inf.inflate(R.layout.change_bike_state, null, true);
而不是
View layout = inf.inflate(R.layout.change_bike_state, null);
arrayAdapter中上下文的值是什么?让你放置changeState.create();在调用changeState.show()之前;试过了,还是崩溃了!使用此代码时,警报不会显示,当尝试显示我已更新答案时,警报会崩溃。我已经检查并测试了它,它的工作非常棒。试试我的代码。你需要传递你活动的背景,而不是活动。我也有同样的行为,我无法理解!我只更改上下文活动,因为上下文崩溃(未显示警报)会引发异常:java.lang.UnsupportedOperationException:AdapterView中不支持addView(视图,LayoutParams)
View layout = inf.inflate(R.layout.change_bike_state, null, true);
View layout = inf.inflate(R.layout.change_bike_state, null);