Question

Je veux pouvoir désactiver l'utilisateur un choix d'options et je voudrais désactiver certains boutons radio dans une boîte de dialogue. J'ai déclaré les boutons radio comme celui-ci dans la section 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 procédure radio_listener est déclarée comme celle-ci

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();         
      }
};

Cependant, lorsque la boîte de dialogue est appelée, j'obtiens une erreur d'exception null sur cette ligne

radio_date.setOnClickListener(radio_listener);

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Lorsque vous souhaitez obtenir l'ID d'un élément d'interface utilisateur situé dans une boîte de dialogue, vous devez le faire comme ceci.

  Dialog dialog = new Dialog(mContext); // your dialog creation method here
  RadioButton radio_date = (RadioButton) dialog.findViewById(R.id.RBdate);

Si tu utilises findViewById Ensuite, vous essayez de capturer l'objet de vue qui est associé à la vue d'acitivité actuelle (que vous auriez définie dans le setContentView API)

Il essaie donc de trouver une vue avec l'ID RBdate Dans la vue d'activité qu'il n'est pas en mesure de trouver et renvoie donc un nul.

Autres conseils

Vérifiez le code suivant Il s'agit d'une alerte avec des boutons radio sur un clic de bouton

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();
        }
    });

tu essaies ceci et faites-moi savoir

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top