Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的onStart()函数在项目的主要活动开始时不起作用?_Java_Android - Fatal编程技术网

Java 为什么我的onStart()函数在项目的主要活动开始时不起作用?

Java 为什么我的onStart()函数在项目的主要活动开始时不起作用?,java,android,Java,Android,当我在主要活动开始时运行onStart方法时,我遇到了一个问题。我的onstart方法不是检查条件,因此每当我打开应用程序时,我总是直接注册我项目的活动,这是不可接受的,因为我希望只有新用户才能直接注册活动,而不是数据库中已经存在的用户 package com.example.bookstore; import androidx.appcompat.app.AppCompatActivity

当我在主要活动开始时运行onStart方法时,我遇到了一个问题。我的onstart方法不是检查条件,因此每当我打开应用程序时,我总是直接注册我项目的活动,这是不可接受的,因为我希望只有新用户才能直接注册活动,而不是数据库中已经存在的用户

                         package com.example.bookstore;

                           import androidx.appcompat.app.AppCompatActivity;

                           import android.content.Intent;
                           import android.os.Bundle;
                           import android.os.SystemClock;

                           import com.google.firebase.auth.FirebaseAuth;
                           import com.google.firebase.auth.FirebaseUser;

                           public class MainActivity extends AppCompatActivity {

                           private FirebaseAuth firebaseAuth;

                           @Override
                           protected void onCreate(Bundle savedInstanceState) {
                           super.onCreate(savedInstanceState);
                           setContentView(R.layout.activity_main);

                           firebaseAuth = FirebaseAuth.getInstance(); accessing firebashauth object
                           SystemClock.sleep(3000);
                           Intent register = new Intent(MainActivity.this, Register_Activity.class);
                           startActivity(register); 

                           //here register intent will shift from 
                           mainactivity to register_activity after 3000 ms

                           finish(); here finishing the register intent
                             }

                          @Override
                          protected void **onStart()** {
                          super.onStart();

                        **FirebaseUser currentUser = firebaseAuth.getCurrentUser();**

                           ***if (currentUser == null)* {
                          Intent registerintent = new Intent(MainActivity.this, 
                          Register_Activity.class);
                           startActivity(registerintent);
                           finish();
                           } 

                            else {
                           *Intent homeactivity = new Intent(MainActivity.this,Home_Activity.class);
                           startActivity(homeactivity);
                           finish();*
                            }**
           This if condition is not checking in onStart method and thus due to this i am always directing to register_activity.
                              }}

根据android lifecycle,onCreate()在onStart()之前调用。 在onCreate()内的代码中

Intent register = new Intent(MainActivity.this, Register_Activity.class);
startActivity(register); 
因此,即使在检查onStart()中的逻辑之前,它也将始终转到Register活动。
要解决此问题,请从onCreate()中删除上面的行。

哦,非常感谢。这很有用!但我还有一个问题。如果我将逻辑(If条件)代码放在onCreate()方法中,那么我将获得所需的输出,但是使用onStart()方法的优点是什么,或者应该在哪里使用onStart()方法?是的,您完全可以这样做。如果您希望任何操作在活动创建期间发生一次,请将其置于onCreate()下,但如果您希望在活动恢复时进行检查,请将其置于onResume()下。有关android生命周期的详细了解,请参阅本文档。onStart()是onCreate()之后和onResume()之前的状态。这是活动对用户可见和交互的状态。因此,如果一个应用程序想要更新一些ui状态,那么可以在这里完成。