我正在制作一个带有闪屏动画的应用。我已经为用户提供了取消动画的选项。
主屏幕(Home)有一个TextView(tv)。我在onCreate()期间设置了文本,并在onResume()期间再次设置了文本。
使用动画运行时,流程为:splashscreen - >主屏幕 - >其他活动。 设置了tv的文本,然后返回到主屏幕,它“重新加载”并设置不同的文本。
取消动画时,它以主屏幕开始:主屏幕 - >其他活动。
问题:当取消动画时,主屏幕在onCreate()期间设置tv2中的文本,然后在onResume()中设置它,即使我添加了'if'子句以防止这种情况发生
这是代码:
public class Home extends Activity {
public static boolean reload = true;
EditText tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv= (EditText) findViewById(R.id.textViewFact);
tv.setText(updateText());
MORE STUFF ....
}
如果用户选择取消动画,则“重新加载”会从其他活动设置为false。
现在为onResume:
public void onResume(){
super.onResume();
Log.i("test", "home activity before if: " + Home.reload);
if(!reload){
Log.i("test", "home activity inside if: " + Home.reload);
return;
}
else{
Log.i("test", "home activity inside else: " + Home.reload);
tv.setText(updateText());
}
}
正如您所看到的,updateText()在onCreate()和onResume()中运行,但如果reload为false(正如您在下面的logcat输出中所看到的那样),它应该不会运行再次使用updateText()。
01-30 08:44:50.140: I/test(551): home activity before if: false
01-30 08:44:50.140: I/test(551): home activity inside if: false
01-30 08:44:51.170: I/test(551): home activity before if: false
01-30 08:44:51.170: I/test(551): home activity inside if: false
我不知道为什么它进入onResume()TWICE(通过日志输出),以及它是如何运行updateText()函数的,当它只在ELSE子句中时,根据日志输出,未达到。
答案 0 :(得分:1)
事实证明,再次调用updateText(),而不是来自onResume()而是来自onCreate(),因为调用主屏幕的活动未正确完成,并实际调用home活动以启动两次。
谢谢大家的帮助。
答案 1 :(得分:0)
我建议你在使用它之前在首选项中添加和更新重新加载标志并从首选项中获取...