Использование переключателей в диалоговом окне - PullRequest
0 голосов
/ 24 февраля 2012

Я хочу, чтобы пользователь мог отключить выбор параметров, и хотел бы отключить некоторые переключатели в диалоговом окне.Я объявил переключатели как это в разделе 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) {
             }

Процедура radio_listener объявлена ​​так

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

Однако, когда вызывается диалог, я получаю ошибку исключения Nullна этой линии

radio_date.setOnClickListener(radio_listener);

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Если вы хотите получить идентификатор элемента пользовательского интерфейса, который находится в диалоговом окне, вам нужно сделать это следующим образом.

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

Если вы используете findViewById, то вы пытаетесь захватитьобъект представления, связанный с текущим представлением активности (которое вы задали бы в setContentView API)

Так что он пытается найти представление с идентификатором RBdate в представлении деятельности, которое онне может найти и, следовательно, возвращает ноль.

0 голосов
/ 24 февраля 2012

проверьте следующий код Это предупреждение с переключателями на нажатие кнопки

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

ты попробуй это и дай мне знать

...