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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top