【发布时间】:2018-09-05 05:07:32
【问题描述】:
我正在尝试将用户字符串的类型存储在 Activity 中的 Shared Preferences 中,但是当我尝试从服务类中的 Shared Preferences 中 getString 在这种情况下 myFirebaseInstanceIDService 它不断给我一个 Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 错误。
这是我的价值所在
btNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(RegisterTutorActivity.this, ChooseSub.class));
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
sharedPref.edit().putString("Type", "Tutor").apply();
signUpTutor();
}
});
在 myFirebaseInstanceIDService 中
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
private String type;
SharedPreferences sharedPref;
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
if(mAuth.getCurrentUser() != null)
{
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
}
public void sendRegistrationToServer(String refreshedToken)
{
sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
type = sharedPref.getString("Type", "");
FirebaseDatabase.getInstance().getReference().child("Users").child(type).child(mAuth.getCurrentUser().getUid())
.child("tokenID").setValue(refreshedToken);
}
}
我现在真的不知道共享首选项有什么问题?
【问题讨论】:
-
您在哪一行收到此错误?
-
尝试使用'SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());'而不是 'SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);'
-
错误发生在SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
-
并且使用 getApplicationContext() 不起作用
-
确保上下文的值不为空
标签: android firebase firebase-cloud-messaging sharedpreferences