我正在使用a DialogFragment,虽然我已成功设置图像以在关闭时关闭(即关闭)对话框,但当用户点击对话框外的任何地方时,我很难找到解除对话框的方法,就像它一样正常的对话.我以为会有某种
dialogFragment.setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)
打电话,但我没有在文档中看到.
这有可能DialogFragment吗?或者我在错误的地方寻找?我尝试拦截"父母"活动中的触摸事件,但除了没有得到任何触摸事件外,它对我来说似乎不对.
熟悉的场景:我有一个Main活动,在按下按钮时启动游戏活动.如果用户按下HOME,然后再次启动我的应用程序,则应该显示Game活动,这是他在使用应用程序时最后所做的事情.
但是,相反的是他再次获得Main活动.我觉得Android正在创建另一个 MainActivity实例并将其添加到该应用程序的堆栈中,而不是仅仅选择顶部的任何内容,因为如果我在重新启动应用程序后按BACK,我会进入游戏活动!并且每次调用Main.onCreate方法,而不是调用GameActivity.onResume.
我AndroidManifest.xml几乎是'骨头':
<activity android:name="MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="GameActivity" android:label="@string/app_name">
</activity>
Run Code Online (Sandbox Code Playgroud)
如你所见,没有什么太花哨的.
这就是新活动的推出方式,也非常简单:
Intent intent = new Intent(this, GameActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
从理论上说,这应该在Android中起到"开箱即用"的作用,因为一个非常相似的问题的答案是:在Android中维护标准应用程序活动后备堆栈状态(使用singleTask启动模式),但事实并非如此.
我一直在阅读和重读有关活动和任务和堆栈的文档,并在SO中浏览所有相关的答案,但我不明白为什么这么简单的设置不能按预期工作.