[原创]andorid不持有dialog对象实现关闭activity的dialog、检测dialog是否弹出

拿不到dialog引用?不想设置为成员变量?却想在某个地方关闭dialog,或者检测当前activity是否被遮盖?

private static ArrayList getWindowViews() {
        try {
            View rootView = null;
            Class wmgClass = Class.forName("android.view.WindowManagerGlobal");
            Object wmgInstnace = wmgClass.getMethod("getInstance").invoke(null, (Object[]) null);
            Field mViewsField = wmgClass.getDeclaredField("mViews");
            mViewsField.setAccessible(true);
            ArrayList o = (ArrayList) mViewsField.get(wmgInstnace);
            return o;

//            private final ArrayList<View> mViews = new ArrayList<View>();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
       List<View> windowViews = getWindowViews();
                if (windowViews != null && windowViews.size() > 0 && windowViews.get(windowViews.size() - 1) != getWindow().getDecorView()) {
//                    BaseEditCodeActivity.super.onBackPressed();
                    View view = windowViews.get(windowViews.size() - 1); //parent = android.view.ViewRootImpl
//                    ViewRootImpl
                    getWindowManager().removeView(view);
                }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现密码的存储、读取和验证功能需要用到Android中的SharedPreferences类。首先,我们需要在登录界面的布局文件中添加两个EditText控件,分别用于输入账号和密码。同时,还需要添加一个Button控件,用于点击登录按钮。 接下来,我们在登录界面的Activity实现保存密码的功能。在点击保存按钮时,我们可以通过以下代码将账号和密码保存到SharedPreferences中: ``` SharedPreferences.Editor editor = getSharedPreferences("account", MODE_PRIVATE).edit(); editor.putString("username", username.getText().toString()); editor.putString("password", password.getText().toString()); editor.apply(); ``` 其中,第一个参数是SharedPreferences的名称,第二个参数是操作模式,MODE_PRIVATE表示只有当前应用程序才能访问这个SharedPreferences。然后,我们通过editor对象的putString方法将账号和密码保存到SharedPreferences中,并使用apply方法提交修改。 保存成功后,我们可以一个Dialog提示用户保存成功,并关闭当前页面: ``` AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("密码保存成功!"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.show(); ``` 在登录界面中读取并验证密码也很简单。我们可以在onCreate方法中读取SharedPreferences中保存的账号和密码,并在登录按钮的点击事件中进行验证: ``` SharedPreferences preferences = getSharedPreferences("account", MODE_PRIVATE); String username = preferences.getString("username", ""); String password = preferences.getString("password", ""); if (TextUtils.equals(username, usernameEditText.getText().toString()) && TextUtils.equals(password, passwordEditText.getText().toString())) { // 账号密码正确,跳转到主界面 Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); finish(); } else { // 账号密码错误,Dialog提示用户重新输入 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("账号或密码错误,请重新输入!"); builder.setPositiveButton("确定", null); builder.show(); } ``` 其中,TextUtils.equals方法用于比较字符串是否相等。如果账号密码正确,我们可以通过Intent跳转到主界面,并关闭当前页面;否则,我们可以一个Dialog提示用户重新输入。 以上就是用Android Studio实现密码的存储、读取和验证功能的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值