0

나는 PreferenceScreen 하나의 "버튼"을 가지고 있고 그것을 클릭 한 후에 Boolean의 값을 sharedPreference prefLogin으로 변경해야하며 그 값은 LoginActivity 인 경우 건너 뛸 수 있습니다. 하지만 작동하지 않습니다! 의도는 네,하지만 alltimes는 loginactivity에서 main, reason으로 리디렉션합니까? "main to intent"는 그럴 경우 해당 onCreateloginActivity안드로이드 - sharedPreference가 변경되지 않았습니다

어떻게 해결할 수 있습니까? 그리고 sharedPreference startLogin 만 그 시간

public class NastaveniaActivity extends PreferenceActivity implements Preference.OnPreferenceClickListener 
{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.settings); 

    findPreference("prefLogin").setOnPreferenceClickListener(this); 
} 



public boolean onPreferenceClick(Preference preference) 
{ 
    String key = preference.getKey(); 

    if(key.equals("prefLogin")) 
    { 
     SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     SharedPreferences.Editor editor = sharedPrefs.edit(); 

     editor.putBoolean("preflogin", true); 
     editor.commit(); 

     Intent intent = new Intent(this, LoginActivity.class); 
     startActivity(intent); 

     return true; 
    } 
    return false; 
} 
} 

및 Settings.XML의를위한 활동에 머물 수

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 

<PreferenceCategory android:title="@string/pref_login"> 
    <PreferenceScreen 
     android:title="@string/pref_prihlasovanie" 
     android:summary="@string/pref_prihlasovanie_summary" 
     android:key="prefLogin" > 
    </PreferenceScreen> 
</PreferenceCategory> 

<PreferenceCategory android:title="@string/pref_update_setting" > 
    <CheckBoxPreference 
     android:defaultValue="true" 
     android:key="prefSendReport" 
     android:summary="@string/pref_send_report_summary" 
     android:title="@string/pref_send_report" /> 
</PreferenceCategory> 

</PreferenceScreen> 

LoginActivity - 여기 onCreate에서 나는 건너 뛰어야하는 경우 설정

에서 로그인에 클릭 후
public class LoginActivity extends Activity 
{ 
String username; 
EditText e_username; 
Boolean login; 
Boolean startLogin; 

String vstupneHeslo; 
String vstupnaPrezivka; 

private NastaveniaActivity nastavenia; 
private DatabaseOp mDbHelper; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 

    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
    showUserSettings(); 

    mDbHelper = new DatabaseOp(this); 
    mDbHelper.open(); 

    if (username!="") 
    { 
     if (!startLogin) 
     { 
      if (!login) 
       loginStart(); 
     } 
    } 
} 

....... 

private void showUserSettings() 
{ 
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 

    username = sharedPrefs.getString("prefUsername", "NULL"); 
    login = sharedPrefs.getBoolean("prefSendReport", false); 
    startLogin = sharedPrefs.getBoolean("prefLogin", false); 

    if (username.equals("NULL")) 
     username = ""; 

    e_username = (EditText)findViewById(R.id.login); 
    e_username.setText(username); 
} 

public void loginStart() 
{ 
    if (startLogin) 
    { 
     SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     Editor editor = sharedPrefs.edit(); 

     editor.putBoolean("prefLogin", false); 
     editor.commit(); 
    } 

    startActivity(username); 
    LoginActivity.this.finish(); 
} 
} 

답변

0

시도해보십시오.

if(key.equals("prefLogin")) 
{ 
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putBoolean("preflogin", true); 
editor.commit(); 
} 
+0

여전히 작동하지 않습니다. – Tomino

+0

답을 편집했습니다. 다시 시도하십시오 .. –

+0

변경된 사항 없음 ... 문제는 환경 설정을 설정하는 것이 아니라 환경 설정 "버튼"을 클릭하는 것으로 확인됩니다 :/ – Tomino

관련 문제