Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何显示持续的对话_Java_Android - Fatal编程技术网

Java 如何显示持续的对话

Java 如何显示持续的对话,java,android,Java,Android,当没有internet连接时,我试图在应用程序的底部显示一条持久消息(通过所有活动),一旦有网络连接,消息就会消失 我曾想过使用和应用程序对话框,我可以这样做,但后来我意识到背景是不可点击的,我需要用户仍然有权浏览页面/菜单 如下图所示 我在自定义警报对话框中尝试了什么 NoInternetDialog.java public class NoConnectionDialog { public void showDialog(Activity activity, String msg)

当没有internet连接时,我试图在应用程序的底部显示一条持久消息(通过所有活动),一旦有网络连接,消息就会消失

我曾想过使用和应用程序对话框,我可以这样做,但后来我意识到背景是不可点击的,我需要用户仍然有权浏览页面/菜单

如下图所示

我在自定义警报对话框中尝试了什么

NoInternetDialog.java

public class NoConnectionDialog {
    public void showDialog(Activity activity, String msg){
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.no_internet_connection_dialog);
        Window window = dialog.getWindow();
        WindowManager.LayoutParams wlp = window.getAttributes();

        wlp.gravity = Gravity.BOTTOM;
        wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
        window.setAttributes(wlp);

        TextView text = (TextView) dialog.findViewById(R.id.text_dialog);
        text.setText(msg);

//        Button dialogButton = (Button) dialog.findViewById(R.id.btn_dialog);
//        dialogButton.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                dialog.dismiss();
//            }
//        });

        dialog.show();

    }
}
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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="@color/zxing_viewfinder_laser"
    android:elevation="4dp"
    android:orientation="vertical"
    android:padding="@dimen/_8sdp"
    app:elevation="4dp">

    <TextView
        android:id="@+id/text_dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/no_internet_connection"
        android:textColor="@color/colorWhite"
        android:textSize="@dimen/dimen_16" />

</LinearLayout>

你们有什么建议?

不要使用
对话框
,只需将该布局添加到
活动
的布局中,并根据用户是否有internet连接设置可见性。这将避免使用
对话框执行此操作时遇到的所有问题。如果您有多个
活动
s,您可以为它们使用一个包含此功能的公共超类。

请详细说明您所说的公共超类是什么意思?您可以有一个扩展
活动
基本活动
(或者您的活动当前扩展的任何子类)你的每一项活动都可以扩展这一点。您可以将internet连接指示器的逻辑放在那里。它可以位于具有相同ID的每个布局中,也可以通过重写setContentView来包装各个布局。
NoConnectionDialog alert = new NoConnectionDialog();
        alert.showDialog(this, "No Internet Connection");