gpt4 book ai didi

java - 尝试从私有(private)类获取共享首选项值时出错

转载 作者:行者123 更新时间:2023-12-01 18:42:08 27 4
gpt4 key购买 nike

我正在尝试获取保存的共享首选项值,并且希望将保存的值弹出到 Toast 消息中。所有这些都发生在一个类中,但我收到错误:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()”

编辑:如果我尝试使用 Log.d("") 打印出值,它工作得很好!我只需要一种方法让它也烤它..

我不确定错误在哪里,但我可以在类中发布我的两个方法,其中一个保存到sharedPreferences中,另一个方法应该从sharedPreferences加载值(错误在这里):

    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);
}

由于我不确定问题到底出在哪里,我在这里发布了类里面的整个代码:

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);
}}

有人可以帮我解决这个问题吗?谢谢。

最佳答案

使用 getActivity() 而不是 mActivity 您的定义不可见。

关于java - 尝试从私有(private)类获取共享首选项值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909540/

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