【问题标题】:Check internet connection with alert dialog使用警报对话框检查 Internet 连接
【发布时间】:2019-09-18 13:43:47
【问题描述】:

在我的应用程序中,我检查互联网连接,当用户没有互联网时,他会显示一个警报对话框。此警报对话框必须按按钮。“关闭”按钮关闭此应用程序,“转到设置”按钮转到用户手机设置。我做得很好但是当用户在他的互联网连接上并回到这个应用程序时用户显示这个警报对话框。但是当他在他的互联网连接上时我没有显示这个警报对话框然后他进入应用程序中的主要活动。

    InternetCheck.isConnected(this);

    logo = findViewById(R.id.logo);
    rotateAnimation = AnimationUtils.loadAnimation(this,R.anim.rotate);
    logo.setAnimation(rotateAnimation);
    splash_progressBar = findViewById(R.id.splash_progressBar);
    splash_progressBar.setVisibility(View.VISIBLE);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            if (InternetCheck.isConnected(getApplicationContext())){
                Intent next = new Intent(SplashActivity.this,MainActivity.class);
                startActivity(next);
                finish();
            }else{
                showDialog();
                splash_progressBar.setVisibility(View.INVISIBLE);
            }
        }
    },SPLASH_OUT);
}

private void showDialog() {

    LayoutInflater inflater = LayoutInflater.from(this);
    View view = inflater.inflate(R.layout.setting_dialog,null);


    Button clsBtn = view.findViewById(R.id.closeBtn);
    Button setttingBtn = view.findViewById(R.id.settingBtn);

    clsBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();

        }
    });

    setttingBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
        }
    });


    AlertDialog alertDialog = new AlertDialog.Builder(this)
            .setView(view)
            .create();

    alertDialog.show();
}

我该怎么做。谢谢

【问题讨论】:

  • 你是什么意思“当他在他的互联网连接时我不显示这个警报对话框然后他去应用程序中的主要活动”?请澄清您的问题
  • 假设用户没有互联网连接,然后他看到警报对话框,然后点击“转到设置”按钮,他转到他的手机设置和网络连接。然后他回到这个应用程序并且不要' t 看到警报对话框并转到此应用中的 mainactivity
  • 由于互联网连接开启,当他返回应用程序时看不到对话框是正常的
  • @matdev 是的,但是我该怎么做?你能解释一下吗
  • 你实现了 onActivityResult() 吗?这是您处理其他活动结果的方式

标签: android android-alertdialog


【解决方案1】:

为了处理来自其他活动的结果,您应该在 SplashActivity 中覆盖 onActivityResult()

此外,当您调用 startActivityForResult() 时,最好提供一个非零值作为 requestCode 参数。

public static final int REQUEST_CODE_SETTINGS = 1;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == Constants.REQUEST_CODE_SETTINGS) {

        //Handle the result from settings activity
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                if (InternetCheck.isConnected(getApplicationContext())){
                    Intent next = new Intent(SplashActivity.this,MainActivity.class);
                    startActivity(next);
                    finish();
                } else{
                    showDialog();
                    splash_progressBar.setVisibility(View.INVISIBLE);
                }
            }
        },SPLASH_OUT);
    }
}

【讨论】:

  • 感谢您的回复,但我正在使用处理程序。请您与处理程序共享完整代码吗?
  • 对不起先生,它不起作用。我可以分享应用程序的示例视频剪辑吗?@matdev
  • 问题是当用户在他/她的互联网连接时,这个应用程序会自动重启并进入下一个活动。
  • 我不明白你的评论。请用 A 澄清您的问题:您的应用程序的期望行为 B:您的应用程序的观察到的行为
猜你喜欢
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多