Сбой активности Android при попытке использовать AlertDialog и пользовательский диалог - PullRequest
0 голосов
/ 27 января 2012

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

Диалог A - Простой AlertDialog, который показывает текст и удаляется Диалог B - всплывающее окно «Сохранить как» с кнопками EditText и Save и Cancel

Я нашел учебные пособия по созданию AlertDialogs и Custom Dialogs, и мне удалось заставить каждый из них работать, но только по отдельности. Когда я пытаюсь поместить весь код в оператор switch / case в методе onCreateDialog, происходит сбой приложения при запуске AlertDialog.

Вот мой код onCreateDialog:

@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        // Display dialog
        case 0:  
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
            alertDialog.setMessage(messageText);
            alertDialog.setNegativeButton(android.R.string.ok, 
                    new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {

                }
            });
            return alertDialog.create();    
        // Save As dialog

        case 1: 
            Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.save_as);
            dialog.setTitle("Save as:");

            Button cancel = (Button)findViewById(R.id.cancel);
            cancel.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {

                }

            });
            return dialog;  
        }
        return null;

    }

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

Вот XML для пользовательского макета диалога:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:padding="10dp">

    <TextView 
        android:text="Save this list as:"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <EditText 
        android:id="@+id/list_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:drawable/bottom_bar" 
    android:paddingLeft="4.0dip"
    android:paddingTop="5.0dip" 
    android:paddingRight="4.0dip"
    android:paddingBottom="1.0dip" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
        <Button
           android:id="@+id/save" 
           android:layout_width="0.0dip"
        android:layout_height="fill_parent" 
        android:text="Save"
        android:layout_weight="1.0"
            ></Button>
        <Button
            android:id="@+id/cancel" 
            android:layout_width="0.0dip"
        android:layout_height="fill_parent" 
        android:text="Cancel"
        android:layout_weight="1.0"
            ></Button>

    </LinearLayout>

</LinearLayout>

Должен ли я придерживаться только одного формата или другого? Я также читал, что DialogFragments сейчас предпочтительнее, но я пока не нашел хороших учебных пособий для начинающих. Любые предложения будут с благодарностью.

1 Ответ

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

В конце концов я понял, что мне нужно передавать данные в диалоговое окно и из него, и я нацеливаюсь на низкий API, поэтому я просто изменил диалоговое окно «Сохранить как» на действие, и все работает нормально. Впрочем, по ходу дела выучил множество ограничений диалогов ...

...