Java 尝试从私有类获取SharedReferences值时出错

Java 尝试从私有类获取SharedReferences值时出错,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在尝试获取保存的SharedReferences值,并希望将保存的值弹出到Toast消息中。所有这些都发生在一个类中,但我得到了一个错误:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()” 编辑:如果我尝试使用Log.d(“”)来打印这些值,它将非常有效!我只需要一个方法让它也烤熟它 我不确定错误在哪里,但我可以在类中发布我的两个方法

我正在尝试获取保存的SharedReferences值,并希望将保存的值弹出到Toast消息中。所有这些都发生在一个类中,但我得到了一个错误:
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();
}