Добавить положительную кнопку в диалог

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

final Dialog dialog = new Dialog(MyActivity.this);
dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Settings");
dialog.show();
 MH.23 мая 2012 г., 00:37
Интересно, что «кажется проще»? по сравнению с использованиемAlertDialog.Builder? Кроме того, вышеприведенный подход не соответствует рекомендациям разработчика, а это значит, что я бы рекомендовал изменить его, независимо от того, как оно выглядит. :)
 MH.23 мая 2012 г., 00:15
Тогда почему бы вам не построитьAlertDialog и установите свой собственный макет на этом (или на самом деле,Builder)? Увидеть.setView(...).
 JoeyCK23 мая 2012 г., 00:19
Я буду, если это единственный вариант, но мой, кажется, проще показать диалог.

Ответы на вопрос(3)

Вы также можете использовать эту функцию

public void showMessage(String title,String message)
{
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(message);
    builder.setPositiveButton("OK", new
            DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                }
            });
    builder.show();
}

Вы можете использовать класс AlertDialog.Builder:

http://developer.android.com/reference/android/app/AlertDialog.Builder.html

Создайте новый экземпляр этого сAlertDialog.Builder myAlertDialogBuilder = new AlertDialog.Builder(context), Затем используйте такие методы, какsetTitle() а такжеsetView() настроить его. Этот класс также имеет методы для настройки кнопок.setPositiveButton(String, DialogInterface.OnClickListener) настроить ваши кнопки. Наконец, используйтеAlertDialog myAlertDialog = myAlertDialogBuilder.create() чтобы получить свой экземпляр AlertDialog, который затем можно настроить с помощью таких методов, какsetCancelable().

Изменить: Также из документов:http://developer.android.com/guide/topics/ui/dialogs.html

& quot; Класс Dialog является базовым классом для создания диалогов. Однако обычно вам не следует создавать экземпляр Dialog напрямую. Вместо этого вы должны использовать один из ... подклассов & quot;

Если вы действительно не хотите использовать AlertDialog, вероятно, лучше будет расширить класс Dialog самостоятельно, чем использовать его как есть.

Решение Вопроса

Вы должны использовать строителя.

LayoutInflater inflater = LayoutInflater.from(this);
View dialog_layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.dialog_root_layout));
AlertDialog.Builder db = new AlertDialog.Builder(MyActivity.this);
db.setView(dialog_layout);
db.setTitle("settings");
db.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    }
});
AlertDialog dialog = db.show();
 09 апр. 2013 г., 12:30
Это было пропущено, но вы просто добавили бы это какdb.setView(dialog_layout)
 03 авг. 2012 г., 08:23
Пожалуйста, прости мое невежество, но где вы назначаете макет вdialog_layout в диалоге?

Ваш ответ на вопрос