getActivity / EasyWindow

Android 悬浮窗框架,好用不解释
Apache License 2.0
1.45k stars 161 forks source link

如果先打开页面再show 或者 关闭页面的同时 show,这个toast不会在其他Activity上显示 #23

Closed StriveXiao closed 3 years ago

StriveXiao commented 3 years ago

startActivity(new Intent(this,TestActivity.class)); // 将 Toaster 中的 View 转移给 EasyWindow 来显示 new EasyWindow<>(this) .setDuration(1000) .setContentView(Toaster.getStyle().createView(this)) .setText(android.R.id.message, "跳转下一个页面") .setGravity(Gravity.BOTTOM) .setYOffset(100) .show();

StriveXiao commented 3 years ago
new EasyWindow<>(this)
            .setDuration(1000)
            .setContentView(Toaster.getStyle().createView(this))
            .setText(android.R.id.message, "测试")
            .setGravity(Gravity.BOTTOM)
            .setYOffset(100)
            .show();
    finish();
getActivity commented 3 years ago

小伙子,EasyWindow 是用 WindowManager 来实现的,在没有悬浮窗权限的情况下,只能依附当前 Activity 才能显示,而你跳转到新页面的时候,新 Activity 已经将旧 Activity 覆盖了,所以导致你没看到有显示的情况。

getActivity commented 3 years ago

至于 Toaster 为什么可以?因为你跳转新 Activity 的时候,里面是加了延迟显示,获取到的栈顶 Activity 是新的 Activity,而不是旧的 Activity,用的是新的 Activity 对象来显示 Toast,所以才能正常显示。

getActivity commented 3 years ago

这个问题既不属于 Toaster 的 bug,也不属于 EasyWindow 的 bug,如果你要实现那种效果也不是没有办法,你在 finish 旧 Activity 的时候做一下延迟任务,在里面显示 EasyWindow,但是 XToast 的构造函数你要传入新的 Activity 的对象,你可以通过获取栈顶 Activity 来获取。

getActivity commented 3 years ago

小伙子,你看看这边还有其他问题不,没有的话我就关闭 issue 了。

StriveXiao commented 3 years ago

没有了,非常感谢