Как назвать родовое занятие финишем - PullRequest
2 голосов
/ 30 сентября 2011

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

public static class AlertDialogs{

    public static void alertButtonDialog(Activity activity, Context context, String title, String message, 
            String positiveButton, String negativeButton) {

        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
        alertBuilder.setTitle(title);
        alertBuilder.setMessage(message);
        alertBuilder.setPositiveButton(positiveButton, new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                Activity.this.finish(); // *?? How to do this part ??*
                // the activity to be finished is the activity which calls this function
            }
        })

    }
}

Позже в любом другом упражнении, когда я отображаю диалог, я просто делаю

 AlertDialogs.alertButtonDialog(...all my Strings...)

Это только для удобства доступа.

1 Ответ

2 голосов
/ 30 сентября 2011

В вашей функции alertButtonDialog определите аргумент Activity activity как окончательный. Затем изнутри onClick слушатель вызывает activity.finish();.

public static void alertButtonDialog(final Activity activity, Context context, String title, String message, 
        String positiveButton, String negativeButton) {

    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
    ...
    alertBuilder.setPositiveButton(positiveButton, new OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            activity.finish();
        }
    })

}

Обратите внимание, что вам не нужны и Activity, и Context - так как первый расширяет более поздний - если только вы не ожидаете, что активность где-то будет нулевой.

...