我正在制作带有启动画面动画的应用程序。我给了用户取消动画的选项。

主屏幕(Home)具有TextView(tv)。我在onCreate()以及onResume()期间设置了文本。

与动画一起运行时,流程为:启动屏幕->主屏幕->其他活动。
设置电视文本,然后返回主屏幕,“重新加载”并设置其他文本。

取消动画后,它将从主屏幕开始:主屏幕->其他活动。

问题:取消动画后,即使我添加了“ if”子句以防止这种情况发生,主屏幕也会在onCreate()期间在tv2中设置文本,然后在onResume()中再次设置文本。

这是代码:

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输出所示,它是IS),则不应运行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。

最佳答案

事实证明,不是从onResume()而是从onCreate()再次调用了updateText(),因为调用主屏幕的活动未正确完成,因此实际上调用了Home活动要启动两次。

谢谢大家的帮助。

关于android - Android: Activity 在onResume()期间执行不需要的功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14598669/

10-12 00:39