Utilizzo dei pulsanti di radio all'interno di una finestra di dialogo
-
12-11-2019 - |
Domanda
Voglio essere in grado di offrire all'utente una scelta di opzioni e vorrei spegnere alcuni pulsanti di radio all'interno di una finestra di dialogo. Ho dichiarato i pulsanti di opzione come questo nella sezione OnCreate
@Override
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
if (id > 0)
{
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View layout = layoutInflater.inflate(R.layout.lectsort_dialog, (ViewGroup) findViewById(R.id.lect_sort));
builder.setView(layout);
// Now configure the AlertDialog
builder.setTitle(R.string.exsort_title);
radio_date = (RadioButton) findViewById(R.id.RBdate);
radio_loctn = (RadioButton) findViewById(R.id.RBloctn);
radio_stream = (RadioButton) findViewById(R.id.RBstream);
radio_date.setOnClickListener(radio_listener);
radio_loctn.setOnClickListener(radio_listener);
radio_stream.setOnClickListener(radio_listener);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
La procedura Radio_Listener è dichiarata così
RadioButton.OnClickListener radio_listener =
new RadioButton.OnClickListener()
{
@Override
public void onClick(View v) {
// Perform action on clicks
RadioButton rb = (RadioButton) v;
Toast.makeText(LecturesActivity.this, rb.getText(), Toast.LENGTH_SHORT).show();
}
};
Tuttavia, quando viene chiamata la finestra di dialogo, ricevo un errore di eccezione nullo su questa riga
radio_date.setOnClickListener(radio_listener);
Che cosa sto facendo di sbagliato?
Soluzione
Quando si desidera ottenere l'ID di un elemento dell'interfaccia utente che si trova all'interno di una finestra di dialogo, è necessario farlo in questo modo.
Dialog dialog = new Dialog(mContext); // your dialog creation method here
RadioButton radio_date = (RadioButton) dialog.findViewById(R.id.RBdate);
Se usi findViewById
Quindi stai cercando di catturare l'oggetto Visualizza associato all'attuale vista di acitività (che avresti impostato nel setContentView
API)
Quindi sta cercando di trovare una vista con l'ID RBdate
Nella vista dell'attività che non è in grado di trovare e quindi restituisce un null.
Altri suggerimenti
Controlla il seguente codice Questo è un avviso con pulsanti di radio su un pulsante Click of
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//int states = {false, false};
builder.setTitle("Select the item that you want to delete from that item ");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// TODO Auto-generated method stub
if(id==0){
}
else
{
});
alert= builder.create();
alert.show();
}
});
ci provi e fammi sapere