Диалог не появится в Android, почему? - PullRequest
0 голосов
/ 01 апреля 2012

Это мой диалоговый Java-файл, который создает проблемы. Это очень похоже на другие диалоговые файлы, которые у меня есть, которые прекрасно работают. Дело в том, что этот диалог вызывается, когда завершается другой диалог прогресса. Другой закрывается, но этот новый не открывается (но код запускается), и я не понимаю, почему.

public class Response extends Dialog implements OnClickListener {

    Button cpandclose;
    EditText response;
    Context context;

    //Skapar dialog med About xml filen
    public Response(Context context, String url) {
        super(context);
        /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /** Design the dialog in main.xml file */
        setContentView(R.layout.response);

        cpandclose = (Button) findViewById(R.id.cpandclose);
        cpandclose.setOnClickListener(this);
        response = (EditText) findViewById(R.id.resposeurl);
        response.setText("http://xxx.com/i/" + url);
        this.context = context;
        Log.d("Response Window: ", "running..");
    }

    public void onClick(View v) {
        if (v == cpandclose) {
            ClipboardManager ClipMan = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
            ClipMan.setText(response.getText());
            dismiss();
        }
    }
}

xml-file для диалогового окна, которое не отображается:

<?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" >

    <TextView
        android:id="@+id/responsetxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Response:"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/resposeurl"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/cpandclose"
        android:layout_width="225dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="Copy and Close" />

</LinearLayout>

Функция приложения, загружающая некоторые данные в фоновом режиме и по окончании, применяет данные, возвращенные к строке:

camera.responseFromServer(serverResponse);

Это вызывает метод responseFromServer в текущем объекте камеры и вызываемая функция выглядит следующим образом:

public void responseFromServer(String url) {
Looper.prepare();
Response response = new Response(this, url);
Log.d("response: ", url);
response.show();
}

Это запускает программу, но я не вижу ни одного диалогового окна. Как это может быть? Возможно, это простое решение, но кажется, что я все перепробовал!

Спасибо за ваш совет и лучшую мудрость.

1 Ответ

3 голосов
/ 01 апреля 2012

Поскольку диалог должен быть создан не в responseFromServer(), а в onCreateDialog().

...