我在登录用户 ID 和适配器 Java 访问中有一个获取共享首选项,但红线显示失败getActivity()。适配器.java代码public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.siparisitemlayout,parent,false); getSharedPreferences = new GetSharedPreferences(getActivity()); kurye_id=getSharedPreferences.getSession().getString("id",null); return new ViewHolder(view );}获取共享首选项代码public GetSharedPreferences(Activity activity){ this.activity=activity;}public SharedPreferences getSession(){ sharedPreferences = activity.getApplicationContext().getSharedPreferences("",0); return sharedPreferences;}public void setSession(String id,String username){ sharedPreferences = activity.getApplicationContext().getSharedPreferences("",0); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("id",id); editor.putString("username",username); editor.commit();}
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
不要在那里使用getActivity()....使用context。
像这样更改您的代码:
getSharedPreferences = new GetSharedPreferences(context);
首先还要检查:GetSharedPreferences 类是否具有用于活动的参数化构造函数?
从适配器获取 SharedPreferences 字符串值
通过构造函数在适配器中传递调用活动的上下文,然后使用该上下文:
Context context;
public ConversationsAdapter(Context context,ConversationsAdapter.ConversationOnClickHandler conversationOnClickHandler) {
this.context=context;
mConversationOnClickHandler = conversationOnClickHandler;
}
现在在你的适配器中你可以这样做:
SharedPreferences preferences = context.getSharedPreferences("my_preference", Context.MODE_PRIVATE);
String id= preferences.getString("id_key", "default_value");
添加回答
举报
0/150
提交
取消