当运行下面的代码时,它会在“PC_Settings_Manager.getInstance()。getSettings()。isTTSEnabled();”行中抛出NullPointerException。 PC_Settings_Manager实例不为空,因为它是单例并且在应用程序启动时初始化。 null是Settings对象。但是,我依靠流程来启动欢迎活动,用户被迫进入设置屏幕并保存设置。那时设置对象不是null。那么,当我调试调试器进入if语句但startActivity不会触发???因此,值得关注的是不起作用。
SharedPreferences sharedPreferences = getSharedPreferences(PC_Application_Constants.EHOPE_SETTINGS_FILE_NAME, MODE_PRIVATE);
boolean isFirstTime = sharedPreferences.getBoolean(PC_Application_Constants.FIRST_TIME_USAGE_KEY, true);
if (isFirstTime) {
Intent pC_Welcome_Activity_Intent = new Intent(PC_LoginActivity.this, PC_Welcome_Activity.class);
startActivity(pC_Welcome_Activity_Intent);
}
// Check Text To Speech Service
boolean isTTSEnabled = PC_Settings_Manager.getInstance().getSettings().isTTSEnabled();
答案 0 :(得分:2)
startActivity()
是异步的。它不等待已开始的活动完成;而是你的代码继续从下一行开始运行。
如果您需要等待活动完成,请使用startActivityForResult()
并将后续代码放在onActivityResult()
中。