2013-07-17 39 views
0

我有2个活动。 MainActivity登录和MainActivity之间的Android切换

public class MainActivity extends SherlockFragmentActivity{ 

    private SharedPreferences settings; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     settings = getPreferences(0); 

     if (settings.getBoolean("firstStart", true)) { 
      Intent i = new Intent(getApplicationContext(), LoginActivity.class); 
      startActivity(i); 
      finish(); 
     } 
     } 
} 

LoginActivity其仅称为在第一时间在App正在启动。它调用saveClass()方法:

private void saveClass() { 
     SharedPreferences preferences = getPreferences(0); 
     SharedPreferences.Editor editor = preferences.edit(); 

     editor.putBoolean("firstStart", false); 

     editor.commit(); 

     Toast.makeText(LoginActivity.this, R.string.toast_login_success, Toast.LENGTH_SHORT).show(); 

     Intent i = new Intent(getApplicationContext(), MainActivity.class); 
     startActivity(i); 
     finish(); 
    } 

而现在的问题:

的LoginActivity总是启动。所以我猜想偏好设置不正常。 我犯了什么错误,或者我该做什么,这段代码的工作原理?

+0

偏好节省,因为你是commiting的变化,那你的逻辑开始活动看起来不错? – tyczj

+0

你可以发布getPreferences(0)的代码; –

+0

也许有问题。我不知道。我认为这应该通常工作,但它看起来像'''settings.getBoolean(“firstStart”,true)'''总是返回true。这应该只是如果入口''firstStart'''不在首选项 – maysi

回答

1

而不是使用getPreferences尝试使用

PreferenceManager.getDefaultSharedPreferences(context);