0

所以我有一个 SharedPreference 我正在调用logged_in。我得到首选项并检查它是否为 1,是否应该启动新活动,否则我希望它向我显示它的实际情况。这是代码:

    @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 Activity,但随后它会将logged_in 首选项显示为 1。所以根据我所看到的,它应该启动新的 Activity,但它不是. 我真的很困惑。任何帮助是极大的赞赏。

4

1 回答 1

4

您正在比较引用而不是字符串值。也就是说,您是说这两个引用是否指向同一个对象,而不是这两个对象的内容是否相同。你应该这样做:

if( !loggedIn.equals("1") )

但是请注意,如果loggedInnull,该代码将引发一个NullPointerException. 所以这会更合适:

if( loggedIn == null || !loggedIn.equals("1") )

int也就是说,在这种特殊情况下,使用首选项会更好。

于 2012-05-28T23:33:59.967 回答