gpt4 book ai didi

android - 共享首选项在 Android K 及以下版本中不起作用

转载 作者:行者123 更新时间:2023-11-30 00:41:26 24 4
gpt4 key购买 nike

重开问题(上一个[未解决]:Shared Preference not holding session (Android K))

我有一个使用共享首选项进行 session 管理的项目。代码一切正常,但真正烦人的是该应用程序在 Android Lollipop 及更高版本中保持 session ,但不幸的是,它在 Android Kitkat 及以下版本中不保持相同。只要应用程序关闭, session 就会丢失,您必须重新登录。以下是我正在使用的代码:

session .java

package com.saptak.disputesession;
import android.content.Context;
import android.content.SharedPreferences;
import java.util.HashMap;
/**
* Created by Saptak Das on 27-02-2017.
*/

public class Session {

SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;

Context context;

public static String KEY_FNAME="namef";
public static String KEY_LNAME="namel";
public static String IS_LOGIN;

public Session(Context context) {
this.context = context;
sharedPreferences=context.getSharedPreferences("userdetails",0);
editor=sharedPreferences.edit();
}

public void CreateLoginSession(String fname,String lname)
{
editor.putString(KEY_FNAME,fname);
editor.putString(KEY_LNAME,lname);
editor.putString(IS_LOGIN,"logged");
editor.commit();
}

public HashMap<String,String> getdetails()
{
HashMap<String,String> details=new HashMap<>();
details.put(KEY_FNAME,sharedPreferences.getString(KEY_FNAME,null));
details.put(KEY_LNAME,sharedPreferences.getString(KEY_LNAME,null));
return details;
}

public boolean loginstatus()
{
if(sharedPreferences.getString(IS_LOGIN,"unlogged").equals("logged"))
{
return true;
}
else
{
return false;
}
}
public void logoutac()
{
editor.clear();
editor.commit();
}
}

登录.java

package com.saptak.disputesession;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

/**
* Created by Saptak Das on 27-02-2017.
*/

public class Login extends Activity {

Button login;
EditText first,last;

Session session;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
session=new Session(getApplicationContext());
login=(Button)findViewById(R.id.log);
first=(EditText)findViewById(R.id.fname);
last=(EditText)findViewById(R.id.lname);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
session.CreateLoginSession(first.getText().toString(),last.getText().toString());
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
}
});
}
}

MainActivity.java

package com.saptak.disputesession;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

Session session;
Boolean flag;

TextView tf,tl;

Button logout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
session=new Session(getApplicationContext());
tf=(TextView)findViewById(R.id.xfname);
tl=(TextView)findViewById(R.id.xlname);
logout=(Button)findViewById(R.id.xlogout);
flag=session.loginstatus();
if(flag==false)
{
startActivity(new Intent(getApplicationContext(),Login.class));
finish();
}
HashMap<String,String> details=session.getdetails();
tf.setText(details.get(Session.KEY_FNAME));
tl.setText(details.get(Session.KEY_LNAME));
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
session.logoutac();
startActivity(new Intent(getApplicationContext(),Login.class));
finish();
}
});
}
}

这个问题现在让我很紧张,因为应用程序已经完美编码,请帮助我。提前致谢!

请注意,问题不在于删除 session 。每次我关闭应用程序时, session 都会自行注销。此问题仅在 Android Kitkat 及以下版本中出现,适用于 Android Lollipop 及以上版本

最佳答案

Session.java 中的字符串 IS_LOGIN 应该有一个像这样的键值:

public static String IS_LOGIN="mykeyvalue";

关于android - 共享首选项在 Android K 及以下版本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com