Java 加载我的应用程序时出现android生命周期问题
我有一个关于活动生命周期的问题(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
我有一个调用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生命周期的内容。这将对您有很大帮助。