我有一个对话框弹出窗口,指示我希望活动运行多长时间。 看似简单,但很难确定活动何时真正开始。 如果用户在G1上打开键盘然后进入横向,则重新运行onCreate方法上的活动。
我不能为类创建静态甚至创建应用程序类,因为我无法确定“应用程序”何时消失。即使在销毁了唯一的活动之后,该应用程序显然还活着。
有没有办法确定是否因为键盘被扩展或调用横向模式而调用了onCreate?
由于
答案 0 :(得分:3)
在onSaveInstanceState中,您可以存储一个标志,指示它是否已运行。如果应用程序正在恢复然后在onCreate(Bundle savedInstanceState)中,savedInstanceState将具有变量,因此您可以检查savedInstanceState!= null和saveInstanceState.get(“restoring”)!= null然后不显示对话框。< / p>
答案 1 :(得分:3)
我尝试创建一个应用程序子类,但我仍无法确定它什么时候会消失。
我尝试了另一种方法。 我在活动中添加了清单,
android:configChanges="orientation|keyboardHidden"
然后在我添加的活动中,
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
这会导致我的onCreate方法在方向改变或隐藏键盘时不被调用。我不确定为什么我的观点在任何一种情况下仍然看起来都很正确,但效果很好。实际上,它甚至可以处理显示在对话框中的文本。当方向改变时,文本会被保留。
答案 2 :(得分:0)
有没有办法确定 onCreate因为被称为 键盘被扩展或 是否引用了横向模式?
有一种方法可以:
1.检查键盘是否正在伸出
2.检查当前方向(横向或纵向)的方法
确定是否已调用onCreate()将需要您做一些工作。例如,您可以使用变量标记onCreate()的完成并将其保存在Activity的状态Bundle中。
您可以检查onCreate()以确定这是第一次运行还是由于配置更改而重新启动,方法是从1,2和标志中找出值。
这只是一个建议;可能存在更好的解决方案