Reputation: 45
i was searching and trying alot today but it all does not help. I want to use a Dialog with my own layout. In this layout there is a spinner with some subitems. My Problem is i can't get those selecteditems.
@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();
}
Upvotes: 0
Views: 63
Reputation: 106
I think that the problem can be that you inflate a layout, which returns a new view. This new view has different reference than this original and when you set the listener, it affects only at this new, not this you want. Maybe you should set this new view to newly created Alert Dialog?
Have you tried something like this (instead of builder.show())?
AlertDialog alertDialog = builder.create();
alertDialog.setView(viewInflater);
alertDialog.show();
It helped me so much when I wanted do set my custom view to alertdialog.
Upvotes: 1