从设置屏幕android返回动作

Dev*_*ath 4 android android-alertdialog android-activity

我的场景:

  1. 我正在开展一项活动
  2. 我正在做验证(检查互联网)
  3. 如果验证错误,则启动警报对话框
  4. 现在我通过按后退按钮进入设置启用互联网回归
  5. 对话框没有被删除它仍然在屏幕上
  6. 我的目标是从设置屏幕返回时重新启动活动

public void open(){
        final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage(getApplicationContext().getResources().getString(R.string.searchFilterLocationMessage));
        alertDialogBuilder.setPositiveButton(R.string.Ok, 
                new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                /*Intent intent = new Intent(Settings.ACTION_SETTINGS) ;
                this.startActivity(intent);
                 */
                startActivityForResult(new Intent(Settings.ACTION_SETTINGS), 0);


            }
        });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 0) {
            Intent intent = getIntent();
        finish();
        startActivity(intent);
        }
    }//onActivityResult
Run Code Online (Sandbox Code Playgroud)

Oni*_*nik 9

启动一个Activity蒙山的singleTask调用发射方式startActivityForResult(intent, requestCode)回报马上取消的结果.您可以在调试器中看到它onActivityResult()甚至在系统设置Activity启动之前调用.

作为一种快速解决方法,我建议使用一个标志来指示是否Activity调用了设置.喜欢

  1. 设置一面旗帜

    private boolean flag = false;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用startActivity()的isteadstartActivityForResult()

    @Override
    public void onClick(DialogInterface arg0, int arg1) {
        startActivity(new Intent(Settings.ACTION_SETTINGS));
        flag = true;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 检查国旗 onResume()

    @Override
    protected void onResume(){
    super.onResume();
        if (flag) {
            startActivity(new Intent(this, MainActivity.class));
            finish();
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)


XH6*_*ser 1

启动设置意图:

startActivity(new Intent(Settings.ACTION_SETTINGS));
Run Code Online (Sandbox Code Playgroud)

并在方法中获取当前的ActivityonResume()

public void onResume(){
    super.onResume();
    // Do your work
}
Run Code Online (Sandbox Code Playgroud)

从设置屏幕返回后,您的onResume()方法将被调用,您可以在此处获取您的位置。