重新启动应用程序而不更改

时间:2018-07-19 18:20:38

标签: android android-activity alertdialog android-alertdialog relaunch

我找到了一些代码来按代码中的主页按钮

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

和这个:

  moveTaskToBack(true);

我从事的活动是单项任务
然后是带有按钮的 alertDialog ,然后单击该代码之一,然后运行并返回首页
因此,当您再次进入应用程序时,警报会在之前取消
我想重新启动应用程序而不退出alertDialog 我该怎么办?
谢谢

2 个答案:

答案 0 :(得分:0)

在使用Builder创建AlertDialog时,您可以设置 setCancelable(false);

答案 1 :(得分:0)

AlertDialog默认按钮将显示对话框。 您应该使用自定义视图创建自定义对话框

override fun onCreate(savedInstanceState: Bundle?) {
    try {
        Thread.sleep(400)
    } catch (e: InterruptedException) {
        e.printStackTrace()
    }

    setTheme(R.style.your_main_theme)
    super.onCreate(savedInstanceState)

    setContentView(...)
    init()
}

和布局dialog_custom也可以自己设计,但这是我用于自定义对话框的布局文件

public class CustomDialog extends AlertDialog(){
    TextView mTitleView,mDescriptionView;
    Button mYesButton,mNoButton,mCancelButton;
    boolean isYesButtonVisible = true;
    boolean isNoButtonVisible = true;
    boolean isCancelButtonVisible = true;

    public CustomDialog(Context context){
        super(context);
    }

    public void setYesButtonVisible(boolean isVisible){
        isYesButtonVisible = isVisible
    }

    public void setNoButtonVisible(boolean isVisible){
        isNoButtonVisible = isVisible
    }

    public void setCancelButtonVisible(boolean isVisible){
        isCancelButtonVisible = isVisible
    }

    @override
    public void show(){
        super.show();
        setContentView(R.layout.dialog_custom);
        mTitleView = findViewById(R.id.text_title);
        mDescriptionView = findViewById(R.id.text_description);
        mYesButton = findViewById(R.id.btn_yes);
        mNoButton = findViewById(R.id.btn_no);
        mCancelButton = findViewById(R.id.btn_cancel);
        isYesButtonVisible ? mYesButton.setVisibility(View.VISIBLE) : mYesButton.setVisibility(View.GONE);
        isNoButtonVisible ? mNoButton.setVisibility(View.VISIBLE) : mNoButton.setVisibility(View.GONE);
        isCancelButtonVisible ? mCancelButton.setVisibility(View.VISIBLE) : mCancleButton.setVisibility(View.GONE);
     }
    //must be called after dialog is showing else you will get NullPointerException
    public void setOnYesClickListener(View.OnClickListener listener){
        mYesButton.setonClickListener(listener);
    }
    public void setOnNoClickListener(View.OnClickListener listener){
        mNoButton.setonClickListener(listener);
    }
    public void setOnCancelClickListener(View.OnClickListener listener){
        mCancelButton.setonClickListener(listener);
    }
}