Обработайте щелчок пользовательского диалогового класса с пользовательским представлением фрагмента или действия - PullRequest
0 голосов
/ 21 ноября 2018

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

Попыткавызвать метод интерфейса 'void com.ymcaspi.util.CustomDialog $ DialogInterface.doLogin (com.ymcaspi.util.CustomDialog)' для пустой ссылки на объект

Мой класс диалогов:

public class CustomDialog extends Dialog implements
    android.view.View.OnClickListener {
public Activity activity;
public Button btnYes, btnNo;
CustomDialog customDialog;
public CustomDialog(Activity activity) {
    super(activity);
    this.activity = activity;
}

DialogInterface dialogInterface;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.alert_login);
    btnYes = (Button) findViewById(R.id.btn_yes);
    btnNo = (Button) findViewById(R.id.btn_no);
    btnYes.setOnClickListener(this);
    btnNo.setOnClickListener(this);
}
//in custom adapter class i want to handle click of button from Activity or fragment, I have created a interface for handling button click
//but showing
@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btn_yes:
            customDialog=new CustomDialog(activity);
            dialogInterface.doLogin(customDialog);
            break;
        case R.id.btn_no:
            dismiss();
            break;
        default:
            break;
    }
    dismiss();
}



  public interface DialogInterface{
        void doLogin(CustomDialog dialog);

   }
}

Я реализовал этот интерфейс фрагментом, но не работает?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Вот один пример, который вы можете попробовать, если намереваетесь получить обратный вызов вашей активности из диалогового окна:

class YourActivity extends Activity implements DialogInterface {

    void showDialog() {
        CustomDialog dialog = // init your CustomDialog
        dialog.setOnLoginClickListener(this);
        dialog.show();
    }

    void doLogin() {
        // Button yes has been clicked, do stuff... 
    }
}

И создать метод для назначения слушателя в вашем классе CustomDialog:

public class CustomDialog extends Dialog implements OnClickListener {

    private DialogInterface dialogInterface;

    public void setOnLoginClickListener(DialogInterface dialogInterface) {
        this.dialogInterface = dialogInterface;
    }
}
0 голосов
/ 21 ноября 2018

Вы не инициализировали dialogInterface в своем диалоговом окне. Если вы реализовали интерфейс в своей деятельности, установите для своей деятельности значение диалогового интерфейса

public CustomDialog(Activity activity,DialogInterface dialogInterface ) {
    super(activity);
    this.activity = activity;
    this.dialogInterface = dialogInterface ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...