我正在制作一个带有闪屏动画的应用程序。我已经为用户提供了取消动画的选项。
主屏幕 (Home) 有一个 TextView (tv) 。我在 onCreate() 期间设置了文本,并在 onResume() 期间再次设置了文本。
运行动画时,流程为:闪屏 -> 主屏幕 -> 其他活动。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 为假(如您在以下 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 子句中时,它不是t 达到,根据日志输出。