我今天正在寻找和尝试很多,但这一切都无济于事。 我想使用具有自己布局的Dialog。在这个布局中有一个带有一些子项的微调器。我的问题是我无法获得这些选定项目。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
builder.setView(inflater.inflate(R.layout.decision, null));
LayoutInflater inflater2= getLayoutInflater();
View viewInflater=inflater2.inflate(R.layout.decision, null);
Spinner spinner=(Spinner) viewInflater.findViewById(R.id.spinner1);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Log.v("click", "returnValue");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.v("click", "nothing");
}
});
builder.setPositiveButton("Start", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.v("click", "positive");
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.v("click", "negative");
}
});
builder.show();
}
答案 0 :(得分:1)
我认为问题可能是你给布局膨胀,这会返回一个新视图。这个新视图与此原始视图的引用不同,当您设置侦听器时,它仅影响此新的,而不是您想要的。也许您应该将此新视图设置为新创建的警报对话框?
你尝试过这样的事情(而不是builder.show())吗?
AlertDialog alertDialog = builder.create();
alertDialog.setView(viewInflater);
alertDialog.show();
当我想要将自定义视图设置为alertdialog时,它帮了我很多。