Активность с темой диалога не отображается как диалог

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

Ниже приведен макет моей деятельности XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/dialog_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.DialogWindowTitle"/>
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView android:id="@+id/dialog_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </ScrollView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        style="@android:style/DeviceDefault.ButtonBar.AlertDialog">
        <Button android:id="@+id/btnCopyToClipbard"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Copy to Clipboard"
            style="@android:style/Widget.DeviceDefault.Button.Borderless"/>
        <Button android:id="@+id/btnClose"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Close"
            style="@android:style/Widget.DeviceDefault.Button.Borderless"/>
    </LinearLayout>
</LinearLayout>

Ниже описано, как определяется моя деятельность.

<activity
            android:name=".CustomAlertDialogActivity"
            android:theme="@style/Theme.AppCompat.Light.Dialog">
        </activity>

Класс деятельности выглядит следующим образом

public class CustomAlertDialogActivity extends BaseActionBarActivity
{
    TextView txtDialogTitle;
    TextView txtDialogMessage;
    Bundle bundle;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.custom_alert_dialog);

        txtDialogTitle = (TextView)findViewById(R.id.dialog_title);
        txtDialogMessage = (TextView)findViewById(R.id.dialog_message);

        bundle = getIntent().getExtras();
        if (bundle != null)
        {
            txtDialogTitle.setText("An error occurred");
            txtDialogMessage.setText("No error was specified");
            return;
        }
        txtDialogTitle.setText(bundle.getString(CustomAlertDialog.DIALOG_TITLE));
        txtDialogMessage.setText(bundle.getString(CustomAlertDialog.DIALOG_MESSAGE));
    }
}

BaseActionBarActivity мой собственный класс, который расширяется AppCompatActivity

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

Скриншот активности

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

Спасибо за вашу помощь

1 ответ

Решение

Это как ваш Activity ищет меня

(Android 6.0 и Android 4.4 соответственно)

Чтобы проверить, я просто скопировал ваш код в пустой проект, и, как вы видите, он работает (хотя и требует некоторой полировки пользовательского интерфейса).

Мое лучшее предположение, что вы непреднамеренно делаете setTheme() и т.д. где-нибудь в суперклассе BaseActionBarActivity, Таким образом, в качестве шага 1, заменить BaseActionBarActivity с AppCompatActivity и посмотрим, изменит ли это что-нибудь.

Другие вопросы по тегам