【问题标题】:Android - sharedPreference not changedAndroid - sharedPreference 未更改
【发布时间】:2014-04-09 06:51:28
【问题描述】:

我在PreferenceScreen 中有一个“按钮”,单击它后我需要将sharedPreference prefLoginBoolean 值更改为true,如果在LoginActivity 中,该值可以跳过我的跳过。但它不工作!意图是的,但是,总是将我从登录活动重定向到主要,原因? "intent to main" 因为如果在onCreateloginActivity

我该如何解决它!并且使用 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();
}
}

【问题讨论】:

    标签: android android-intent sharedpreferences preferences preferencescreen


    【解决方案1】:

    试试这个..

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

    【讨论】:

    • 没有任何改变......我认为问题不在于设置偏好,而在于识别点击偏好“按钮”:/
    • 控制是否进入 if(){} 条件..??只需调试和检查。
    • 不,我不知道这个原因如何在那个“按钮”上制作函数
    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多