android DialogFragment android:onClick=“buttonCancel” causes IllegalStateException could not find a method

后端 未结 3 1565
我寻月下人不归
我寻月下人不归 2021-02-10 15:12

I have a problem with my Dialog Fragment. I wanted to use android:onClick attribute as in my opinion code is more clear then.

In my layout I have the following declarati

3条回答
  •  死守一世寂寞
    2021-02-10 15:23

    I would try a different approach which works fine for me:

    1. implement an OnClickListener into your fragment:

      public class DialogNewDatabase extends DialogFragment implements OnClickListener`
      
    2. have a button with an unique id in xml, which does NOT need android:clickable

    3. override the method onClick() within your fragment and insert a reaction on your click:

      public void onClick(View v) {       
        switch (v.getId()) {
          case R.id.dialog_new_database_button_cancel:
              // your stuff here
              this.dismiss();
      
              break;          
          default:                
              break;
         }
      }   
      
    4. import the necessary:

      import android.view.View.OnClickListener; 
      
    5. start the onClickListener on the button:

      private Button bCancel = null;
      bCancel = (Button) findViewById(R.id.dialog_new_database_button_cancel);
      bCancel.setOnClickListener(this);
      // it is possible that you might need the refrence to the view.
      // replace 2nd line with (Button) getView().findViewById(...);
      

      This way you can handle even more clickable buttons in the same onClick-method. You just need to add more cases with the proper ids of your clickable widgets.

提交回复
热议问题