我在Spinner
内有AlertDialog
,但每当我在微调器内选择一个值时,一旦微调器关闭,它就不会显示。
我的onItemSelected
也没有将任何内容记录到控制台(我已经确认日志方法不是破坏的方法)。嵌套runOnUiThread
是尝试修复此问题,尽管它没有起作用。
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();
编辑:截图
答案 0 :(得分:1)
复制你的代码并做一些小的/简化的调整,我发现没什么不寻常的,工作正常!
Spinner selector = new Spinner(MainActivity.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() {
Log.d(TAG, adapterView.getItemAtPosition(i).toString());
}
});
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(MainActivity.this,
android.R.layout.simple_spinner_item,
new String[]{"a","b","c"});
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
selector.setAdapter(dataAdapter);
dataAdapter.notifyDataSetChanged();
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setView(selector);
dialogBuilder.setTitle("title");
dialogBuilder.setMessage("message");
AlertDialog b = dialogBuilder.create();
b.show();
我选择它们时,我的日志会显示“a”,“b”,“c”。
请在重新构建我的代码时跟踪您的步骤并进行测试,以匹配您的代码。
编辑:
List<String> LIST = new ArrayList<>();
LIST.add("a");
LIST.add("b");
LIST.add("c");
使用LIST
代替new String[]{}
也可以正常使用。