Java 尝试从私有类获取SharedReferences值时出错
我正在尝试获取保存的SharedReferences值,并希望将保存的值弹出到Toast消息中。所有这些都发生在一个类中,但我得到了一个错误:Java 尝试从私有类获取SharedReferences值时出错,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在尝试获取保存的SharedReferences值,并希望将保存的值弹出到Toast消息中。所有这些都发生在一个类中,但我得到了一个错误:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()” 编辑:如果我尝试使用Log.d(“”)来打印这些值,它将非常有效!我只需要一个方法让它也烤熟它 我不确定错误在哪里,但我可以在类中发布我的两个方法
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()”
编辑:如果我尝试使用Log.d(“”)来打印这些值,它将非常有效!我只需要一个方法让它也烤熟它
我不确定错误在哪里,但我可以在类中发布我的两个方法,其中一个保存到SharedReferences,另一个方法应该从SharedReferences加载值(错误在这里):
由于我不确定问题到底出在哪里,我将类中的全部代码发布在这里:
package com.example.vi_prover_selvfolgelig_igjen.normal_java_classes.Firebase;
public class FirebaseUserProfile extends FirebaseRegistration {
private String introMessageSeen = "False";
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener firebaseAuthListener;
public Activity mActivity;
public FirebaseUserProfile(){
}
public String getUid() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
return the_uid;
}
protected final static String DEFAULT = "0";
public void saveDataForPreferences(Context context, String userId, String lol, String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(lol, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, userId);
editor.putString(key, lol);
editor.commit();
editor.apply();
readSharedPreference(context, userId, lol);
}
public String readSharedPreference(Context context,String lol ,String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(lol, Context.MODE_PRIVATE);
Toast.makeText(mActivity, lol, Toast.LENGTH_SHORT).show();
return sharedPreferences.getString(key,DEFAULT);
}
public void addPersonalInfoToDB(final Context howToDoThis){ // is this correct?
Query secretNotesQuery = FirebaseDatabase.getInstance().getReference().child("AdditionalUserInfo");
secretNotesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final DatabaseReference current_notes_db = FirebaseDatabase.getInstance().getReference().child("AdditionalUserInfo").push();
Map extraUserInfo = new HashMap();
extraUserInfo.put("sex", sex);
extraUserInfo.put("user-age", age);
extraUserInfo.put("user-weight", weight);
extraUserInfo.put("intro-message-seen", introMessageSeen);
extraUserInfo.put("user_id", getUid());
saveDataForPreferences(howToDoThis,getUid(), introMessageSeen,"0");
current_notes_db.setValue(extraUserInfo);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void getUserProfile(final Context theContext) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
final String the_uid = user.getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistraion");
Query userQuery = additionalUserInfoRef.orderByKey().equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
String userName = ds.child("username").getValue(String.class);
String nameOfUser = ds.child("name").getValue(String.class);
setUsername(userName);
setName(nameOfUser);
showUserWorkOutProfile();
saveDataForPreferences(theContext, the_uid, nameOfUser, "0");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void CHANGEIMPORTANTUSERINFO(){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistraion");
Query userQuery = additionalUserInfoRef.orderByKey().equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
map.put("name", getName());
ds.getRef().updateChildren(map);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void ChangeWorkOutProfileDetails() {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("AdditionalUserInfo");
Query userQuery = additionalUserInfoRef.orderByChild("user_id").equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
map.put("user-age", age);
map.put("user-weight", weight);
ds.getRef().updateChildren(map);
showUserWorkOutProfile();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void showUserWorkOutProfile() {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("AdditionalUserInfo");
Query userQuery = additionalUserInfoRef.orderByChild("user_id").equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
String userAge = ds.child("user-age").getValue(String.class);
String userWeight = ds.child("user-weight").getValue(String.class);
setAge(userAge);
setWeight(userWeight);
if (mRegistrationListener != null)
mRegistrationListener.onRegistrationComplete(true); // Assumes success
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
private OnRegistrationCompleteListener mRegistrationListener;
// Set listener ( callback ) that will be called on registration completion
public FirebaseUserProfile(OnRegistrationCompleteListener listener ) {
mRegistrationListener = listener;
}
// Interface that can be implemented by other classes
public interface OnRegistrationCompleteListener
{
void onRegistrationComplete( boolean success);
}}
package com.example.vi_prover_selvfolgelig_igjen.normal_java_classes.Firebase;
公共类FirebaseUserProfile扩展了FirebaseRegistration{
私有字符串introMessageSeen=“False”;
私人消防队;
私有FirebaseAuth.AuthStateListener firebaseAuthListener;
公共活动积极性;
公共FirebaseUserProfile(){
}
公共字符串getUid(){
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
字符串:uid=user.getUid();
返回uid;
}
受保护的最终静态字符串DEFAULT=“0”;
public void saveDataForPreferences(上下文上下文、字符串userId、字符串lol、字符串键){
SharedReferences SharedReferences=context.getSharedReferences(lol,context.MODE\u PRIVATE);
SharedReferences.Editor=SharedReferences.edit();
putString(key,userId);
putString(key,lol);
commit();
editor.apply();
ReadSharedReference(上下文、用户ID、lol);
}
公共字符串readSharedReference(上下文上下文、字符串lol、字符串键){
SharedReferences SharedReferences=context.getSharedReferences(lol,context.MODE\u PRIVATE);
Toast.makeText(mActivity,lol,Toast.LENGTH_SHORT).show();
返回SharedReferences.getString(键,默认值);
}
public void addPersonalInfoToDB(最终上下文howtothis){//这是否正确?
Query secretNotesQuery=FirebaseDatabase.getInstance().getReference().child(“AdditionalUserInfo”);
secretNotesQuery.addListenerForSingleValueEvent(新值EventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
final DatabaseReference current_notes_db=FirebaseDatabase.getInstance().getReference().child(“AdditionalUserInfo”).push();
Map extraUserInfo=newhashmap();
extraUserInfo.put(“sex”,sex);
extraUserInfo.put(“用户年龄”,年龄);
extraUserInfo.put(“用户重量”,重量);
extraUserInfo.put(“看到了介绍消息”,看到了介绍消息);
put(“user_id”,getUid());
saveDataForPreferences(howtotothis,getUid(),introMessageSeen,“0”);
当前注释数据库设置值(extraUserInfo);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
public void getUserProfile(上下文的最终上下文){
最终FirebaseUser用户=FirebaseAuth.getInstance().getCurrentUser();
最后一个字符串是_uid=user.getUid();
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference additionalUserInfoRef=rootRef.child(“用户注册”);
Query userQuery=additionalUserInfoRef.orderByKey().equalTo(uid);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
Map Map=newhashmap();
字符串userName=ds.child(“userName”).getValue(String.class);
字符串nameOfUser=ds.child(“name”).getValue(String.class);
setUsername(用户名);
设置名称(用户名称);
showUserWorkOutProfile();
为首选项保存数据(上下文、uid、用户名称,“0”);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(mActivity,“出错了…”,Toast.LENGTH_SHORT.show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void CHANGEIMPORTANTUSERINFO(){
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
字符串:uid=user.getUid();
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference additionalUserInfoRef=rootRef.child(“用户注册”);
Query userQuery=additionalUserInfoRef.orderByKey().equalTo(uid);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
Map Map=newhashmap();
put(“name”,getName());
ds.getRef().updateChildren(map);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(mActivity,“出错了…”,Toast.LENGTH_SHORT.show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void ChangeWorkOutProfileDetails(){
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
字符串:uid=user.getUid();
DatabaseReference AdditionalUserInfo=rootRef.child(“AdditionalUserInfo”);
Query userQuery=additionalUserInfoRef.orderByChild(“用户标识”).equalTo(用户标识);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共voi
package com.example.vi_prover_selvfolgelig_igjen.normal_java_classes.Firebase;
public class FirebaseUserProfile extends FirebaseRegistration {
private String introMessageSeen = "False";
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener firebaseAuthListener;
public Activity mActivity;
public FirebaseUserProfile(){
}
public String getUid() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
return the_uid;
}
protected final static String DEFAULT = "0";
public void saveDataForPreferences(Context context, String userId, String lol, String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(lol, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, userId);
editor.putString(key, lol);
editor.commit();
editor.apply();
readSharedPreference(context, userId, lol);
}
public String readSharedPreference(Context context,String lol ,String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(lol, Context.MODE_PRIVATE);
Toast.makeText(mActivity, lol, Toast.LENGTH_SHORT).show();
return sharedPreferences.getString(key,DEFAULT);
}
public void addPersonalInfoToDB(final Context howToDoThis){ // is this correct?
Query secretNotesQuery = FirebaseDatabase.getInstance().getReference().child("AdditionalUserInfo");
secretNotesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final DatabaseReference current_notes_db = FirebaseDatabase.getInstance().getReference().child("AdditionalUserInfo").push();
Map extraUserInfo = new HashMap();
extraUserInfo.put("sex", sex);
extraUserInfo.put("user-age", age);
extraUserInfo.put("user-weight", weight);
extraUserInfo.put("intro-message-seen", introMessageSeen);
extraUserInfo.put("user_id", getUid());
saveDataForPreferences(howToDoThis,getUid(), introMessageSeen,"0");
current_notes_db.setValue(extraUserInfo);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
public void getUserProfile(final Context theContext) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
final String the_uid = user.getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistraion");
Query userQuery = additionalUserInfoRef.orderByKey().equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
String userName = ds.child("username").getValue(String.class);
String nameOfUser = ds.child("name").getValue(String.class);
setUsername(userName);
setName(nameOfUser);
showUserWorkOutProfile();
saveDataForPreferences(theContext, the_uid, nameOfUser, "0");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void CHANGEIMPORTANTUSERINFO(){
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference additionalUserInfoRef = rootRef.child("UserRegistraion");
Query userQuery = additionalUserInfoRef.orderByKey().equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
map.put("name", getName());
ds.getRef().updateChildren(map);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void ChangeWorkOutProfileDetails() {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("AdditionalUserInfo");
Query userQuery = additionalUserInfoRef.orderByChild("user_id").equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
map.put("user-age", age);
map.put("user-weight", weight);
ds.getRef().updateChildren(map);
showUserWorkOutProfile();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
public void showUserWorkOutProfile() {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String the_uid = user.getUid();
DatabaseReference additionalUserInfoRef = rootRef.child("AdditionalUserInfo");
Query userQuery = additionalUserInfoRef.orderByChild("user_id").equalTo(the_uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Map<String, Object> map = new HashMap<>();
String userAge = ds.child("user-age").getValue(String.class);
String userWeight = ds.child("user-weight").getValue(String.class);
setAge(userAge);
setWeight(userWeight);
if (mRegistrationListener != null)
mRegistrationListener.onRegistrationComplete(true); // Assumes success
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(mActivity, "Something went wrong..", Toast.LENGTH_SHORT).show();
}
};
userQuery.addListenerForSingleValueEvent(valueEventListener);
}
private OnRegistrationCompleteListener mRegistrationListener;
// Set listener ( callback ) that will be called on registration completion
public FirebaseUserProfile(OnRegistrationCompleteListener listener ) {
mRegistrationListener = listener;
}
// Interface that can be implemented by other classes
public interface OnRegistrationCompleteListener
{
void onRegistrationComplete( boolean success);
}}
public void saveDataForPreferences(Context context, String userId, String lol, String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(lol, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, userId);
editor.putString(key, lol);
editor.commit();
editor.apply();
mToast(readSharedPreference(context, "LOL", "P_KEY"));
}
public String readSharedPreference(Context context,String lol ,String key){
SharedPreferences sharedPreferences = context.getSharedPreferences(lol, Context.MODE_PRIVATE);
return sharedPreferences.getString(key, "DEFAULT");
}
public void mToast(String msg){
Toast.makeText(this, ""+msg, Toast.LENGTH_SHORT).show();
}