Android 不确定是什么';这是怎么回事
所以我有一个共享的参考,我打电话给logged_。我得到首选项并检查它是否为1,如果是,它应该开始新的活动,否则我希望它向我显示它实际上是什么。代码如下:Android 不确定是什么';这是怎么回事,android,android-preferences,Android,Android Preferences,所以我有一个共享的参考,我打电话给logged_。我得到首选项并检查它是否为1,如果是,它应该开始新的活动,否则我希望它向我显示它实际上是什么。代码如下: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferenceManager.setDefaultValues(this, R.xml.prefe
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
prefs = getSharedPreferences("preferences", MODE_PRIVATE);
// Check if the user is logged in
String loggedIn = prefs.getString("logged_in", null);
if(loggedIn != "1") {
setContentView(R.layout.main);
TextView textView = (TextView) findViewById(R.id.login_status);
textView.setText(prefs.getString("logged_in", null));
}
else {
startActivity(new Intent(this, LoggedInActivity.class));
}
}
真正奇怪的是,它将加载主视图而不是启动LoggedIn活动,但随后它将首选的loggeu显示为1。所以根据我所看到的,它应该开始新的活动,但事实并非如此。我真的很困惑。非常感谢您的帮助。您正在比较引用而不是字符串值。也就是说,这两个引用是否指向同一个对象,而不是这两个对象的内容是否相同。你应该改为:
if( !loggedIn.equals("1") )
但是请注意,如果loggedIn
为null
,则该代码将引发NullPointerException
。所以这更合适:
if( loggedIn == null || !loggedIn.equals("1") )
也就是说,在这种特殊情况下,最好使用
int
首选项。比较引用而不是字符串值。也就是说,这两个引用是否指向同一个对象,而不是这两个对象的内容是否相同。你应该改为:
if( !loggedIn.equals("1") )
但是请注意,如果loggedIn
为null
,则该代码将引发NullPointerException
。所以这更合适:
if( loggedIn == null || !loggedIn.equals("1") )
也就是说,在这种特殊情况下,您最好使用
int
首选项。Oh snap!谢谢你,好先生!我觉得我应该知道这一点。无论如何,我不会再犯那个错误了!谢谢你!!!哦,快!谢谢你,好先生!我觉得我应该知道这一点。无论如何,我不会再犯那个错误了!谢谢你!!!