【发布时间】:2020-03-11 14:57:56
【问题描述】:
我想显示一个带有 Yes No 选项的基本警报对话框,但这些方法似乎都不起作用。 显示了对话框,但没有按钮是 YES NO 我正在使用 API 26。 我在另一个活动中显示警报对话框没有问题(它们都不是主要活动),即使使用自定义布局。
我正在使用许多警报对话框,但有一个返回确认的示例。
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setMessage(getResources().getString(R.string.goBackAlert))
.setCancelable(false)
.setPositiveButton(_yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ScanRouteActivity.super.onBackPressed();
}
})
.setNegativeButton(_no, null)
.show();
}
此功能在另一个活动中运行良好。
我也试过这样的:
AlertDialog.Builder builder =new AlertDialog.Builder(getApplicationContext());
builder.setMessage(getResources().getString(R.string.goBackAlert));
builder.setCancelable(false);
builder.setPositiveButton(_yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
QuarantineActivity.super.onBackPressed();
}
});
builder.setNegativeButton(_no, null);
AlertDialog dialog = builder.create();
dialog.show();
与
final AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setMessage(getResources().getString(R.string.goBackAlert))
.setCancelable(false)
.setPositiveButton(_yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
QuarantineActivity.super.onBackPressed();
}
})
.setNegativeButton(_no, null);
final AlertDialog ad = builder.create();
ad.show();
我已经尝试了以下 AlertDialog 导入:
import android.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
这是活动的 XML 在此活动中运行良好:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorBackground"
tools:context=".ScanRouteActivity">
<TextView
android:id="@+id/txtVIdRoute"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TitleFont"
android:text=""/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/menuLabels"
android:layout_gravity="center"
android:id="@+id/txtVCurrentContent" />
<FrameLayout
android:id="@+id/frmScanContent"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
这里不工作
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorBackground"
tools:context=".QuarantineActivity">
<TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Select container type:"
android:textColor="@android:color/black"
/>
<Spinner
android:id="@+id/spinQType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/containerType_list"
/>
<Button
android:layout_marginStart="@dimen/default_margin"
android:layout_gravity="center"
android:gravity="center"
android:drawableStart="@drawable/add_photo"
android:id="@+id/btnAddPhoto"
android:enabled="false"
style="@style/circleBtnDark"/>
</TableRow>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/frmQuarantine"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imgVPhoto"
android:maxWidth="150dp"
android:minWidth="150dp"
android:maxHeight="150dp"
android:minHeight="150dp"
android:layout_margin="@dimen/default_margin"
android:longClickable="true"
android:visibility="gone"
app:srcCompat = "@drawable/no_image"/>
</LinearLayout>
【问题讨论】:
-
只需致电
onBackPressed()与所有活动引用有关。 -
谢谢,但这不是我的问题,我调用该函数是因为我需要返回确认。这只是一个例子,AlertDialog 在任何功能中都不起作用。
-
对话框不工作活动使用哪个主题?
-
默认主题,我唯一改变的是背景颜色,在两个活动中都是一样的。
-
确保在没有显示对话框的活动中调用了onBackPressed方法
标签: java android xml android-layout android-alertdialog