簡體   English   中英

如何在應用程序中的任何活動之上顯示警報對話框 android

[英]how to show alert dialog on top of any activity in an application android

我想顯示一個警告對話框。 這個警報對話框是在一個活動中創建的。 但問題是當我從服務器得到一些響應時,我想在應用程序中的任何活動之上顯示這個對話框

是的我得到了解決方案....

首先,我創建了一個顯示警告對話框的類。 收到服務器的響應,調用方法通過傳遞應用程序上下文來顯示警告對話框

package io.omoto.omotokairaliapp.Utls;

import android.content.Context;
import android.view.WindowManager;

import com.gitonway.lee.niftymodaldialogeffects.lib.NiftyDialogBuilder;

import io.omoto.omotokairaliapp.Constants.Constants;

/**
 * Created by ${venkie} on ${28/1/16}.
 */
public class DisplayRegisteredMessage {

    Context context;
    private NiftyDialogBuilder dialogBuilder;


    public DisplayRegisteredMessage(Context context) {

        this.context = context;
    }

    public void displayMessage() {

        if (Constants.FLAG == 1) {
            Constants.FLAG = 0;

            dialogBuilder = NiftyDialogBuilder.getInstance(context);
            dialogBuilder
                    .withTitle("Response is already registered")
                    .withMessage("For this Customer we have already taken response Sorry!!");
            dialogBuilder.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
            dialogBuilder.show();

        } else {


        }
    }


}

上面的代碼顯示警告對話框

@Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                super.onSuccess(statusCode, headers, response);
                Log.e("response page", response.toString());
                try {
                    if (response.getString(Constants.STATUS).equalsIgnoreCase("SUCCESS"))
                        p7.deleterecord(p7b.getFlowid());
                        p7.deleteRows();

                    Constants.FLAG = 1;
                    DisplayRegisteredMessage displayRegisteredMessage = new DisplayRegisteredMessage(mContext);
                    displayRegisteredMessage.displayMessage();


                } catch (JSONException e) {
                    e.printStackTrace();
                }
                Log.e("Page 6", p7b.getFlowid());
            }

在其他類(非活動)中創建警報對話框,如下面的靜態方法中的代碼所示,並使用UDF.showAlertDialog(activity)調用此方法,以顯示對話框。

public class UDF { 
public static void showAlertDialog(
                String warning,
                DialogInterface.OnClickListener positiveClickListener,
                DialogInterface.OnClickListener negativeClickListener,
                Context context) {

            AlertDialog.Builder alertdialog = new AlertDialog.Builder(context);
            alertdialog.setMessage(warning);

            alertdialog.setPositiveButton("Ok", positiveClickListener);
            alertdialog.setNegativeButton("Cancel", negativeClickListener);
            alertdialog.show();

        }

    }

編輯:設置此項

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

並在menifest.xml中添加權限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

並在創建活動或上下文的對話框實例時傳遞getApplicationContext()

這是對我有用的解決方法:

假設您總共有 4 個活動:

  1. 主要活動
  2. 其他活動1
  3. 其他活動2
  4. 其他活動3

我在 MainActivity 中有警報對話框的代碼,我希望警報對話框顯示在所有活動中。 我做了以下事情:

  1. 使其他活動擴展主要活動。
     public class OtherActivity1 extends MainActivity{ } public class OtherActivity2 extends MainActivity{ } public class OtherActivity3 extends MainActivity{ }

在您的主要活動中,將上下文保存在變量中。

public class MainActivity extends AppCompatActivity{

    public static Context contextMain;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        contextMain = MainActivity.this;

    }

}

無論您嘗試在 MainActivity 中調用警報對話框,只需將 contextMain 作為上下文傳遞即可。

final AlertDialog.Builder dialog = new AlertDialog.Builder(contextMain)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM