Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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 加载我的应用程序时出现android生命周期问题_Java_Android_React Native_Google Signin - Fatal编程技术网

Java 加载我的应用程序时出现android生命周期问题

Java 加载我的应用程序时出现android生命周期问题,java,android,react-native,google-signin,Java,Android,React Native,Google Signin,我有一个关于活动生命周期的问题(android开发非常新) 我有一个调用MainActivity.java的方法。 在main活动中,我已设置了我的谷歌登录。 目前,只要我运行我的应用程序,它就会显示谷歌登录弹出窗口。 我希望它仅在调用我的方法时显示。我已经将“getAuthorizations”方法链接到JS文件中的一个按钮。单击按钮时,将调用此方法,然后将显示google登录弹出窗口。 显然,onCreate不是正确的方法。 这里需要帮助 方法: //Custom function that

我有一个关于活动生命周期的问题(android开发非常新)
我有一个调用MainActivity.java的方法。
在main活动中,我已设置了我的谷歌登录。
目前,只要我运行我的应用程序,它就会显示谷歌登录弹出窗口。
我希望它仅在调用我的方法时显示。我已经将“getAuthorizations”方法链接到JS文件中的一个按钮。单击按钮时,将调用此方法,然后将显示google登录弹出窗口。
显然,onCreate不是正确的方法。 这里需要帮助

方法:

//Custom function that we are going to export to JS
    @ReactMethod
    public void getAuthorizations() {
        try{
            new MainActivity();
        }catch (Exception e){
            Log.i("error", "error!!!!");
        }
    }
主要活动

public class MainActivity extends ReactActivity {
    private static String TAG = "myHealth";

      @Override
      protected String getMainComponentName() {
          return "MyHealth";
        }

      private FitnessOptions fitnessOptions;
      int GOOGLE_FIT_PERMISSIONS_REQUEST_CODE = 1001;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setFitnessOption();
        checkFitInstalled();
      }

      public void checkFitInstalled() {
        if (isGoogleFitPermissionGranted()) {
          // do whatever you need here
        } else {
          requestGoogleFitPermission();
        }
      }

      public boolean isGoogleFitPermissionGranted() {
        if (GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)) {
          return true;
        } else {
          return false;
        }
      }

      public void setFitnessOption() {
        fitnessOptions =
                FitnessOptions.builder()
                        .addDataType(DataType.TYPE_ACTIVITY_SEGMENT, FitnessOptions.ACCESS_READ)
                        .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
                        .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                        .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                        .addDataType(DataType.TYPE_ACTIVITY_SEGMENT)
                        .build();
      }

      public void requestGoogleFitPermission() {
        GoogleSignInAccount account = GoogleSignIn.getAccountForExtension(this, fitnessOptions);
        GoogleSignIn.requestPermissions(
                this,
                GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
                account,
                fitnessOptions);
      }
}
更新(根据答案):

@ReactMethod
    public void getAuthorizations() {
        try{
   // create Intent and start activity
            Intent intent = new Intent(getReactApplicationContext(), MainActivity.class);
            getReactApplicationContext().startActivity(intent);
        }catch (Exception e){
            Log.i("error", "error!!!!");
        }
    }

欢迎使用本机编程:-) 如果要在活动中的任何位置打开另一个活动,则必须声明一个意图对象并标识源活动和目标活动,例如:

Intent intent = new Intent(YourCurrentActivity.this,MainActivity.class);

startActivty(intent);

谢谢你,伙计!所以我需要用我的方法来做,对吗??(请在问题末尾检查我的更新代码)。那么我应该从mainActivity中删除onCreate吗?如何调用我的函数“setFitnessOption()”?没错。onCreate()是activitie生命周期中的第一个方法,将在您启动新活动后执行,因此您可以在其中调用您的方法,它将在您打开新活动后立即执行。我建议您阅读有关android生命周期的内容。这将对您有很大帮助。