AlertDialog
の中にSpinner
がありますが、スピナー内の値を選択するたびに、スピナーが閉じられると表示されません。 私のonItemSelected
は、コンソールに何もログを記録しません(ログメソッドが壊れたメソッドではないことを確認しました)。ネストされたrunOnUiThread
は、この問題を解決する試みですが、これはうまくいきません。AlertDialogのAndroid Spinnerはオプションを選択しません
Spinner selector = new Spinner(XActivity.this);
selector.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
selector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(final AdapterView<?> adapterView, View view, final int i, long l) {
runOnUiThread(new Runnable() {
@Override
public void run() {
X.getInstance().log("Selected item : " + adapterView.getItemAtPosition(i));
}
});
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(RegisterActivity.this, android.R.layout.simple_spinner_item, LIST);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
selector.setAdapter(dataAdapter);
selector.setPrompt("*removed*");
dataAdapter.notifyDataSetChanged();
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(XActivity.this);
dialogBuilder.setView(selector);
dialogBuilder.setTitle("*removed*");
dialogBuilder.setMessage("*removed*");
dialogBuilder.setPositiveButton("Set", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String selected = String.valueOf(selector.getSelectedItem());
X.getInstance().log("User selected " + selected + "");
}
});
dialogBuilder.setNegativeButton("Select Later", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// TODO }
});
dialogBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
// TODO
}
});
AlertDialog b = dialogBuilder.create();
b.show();
編集:スクリーンショット
スクリーンショットを表示できますか? – TruongHieu
@TruongHieuスクリーンショットが追加されました。それは見た目で、「アドベンチャー」をタップすると基本的にスピナーが閉じられ、何も選択されません。 –
あなたのコードをチェックしたところで、X.getInstance()。log()を単純なLog.d()に置き換え、dialogBuilder.setButtons =を使い切って簡略化したところ、 – TWL