【发布时间】:2016-01-12 10:05:52
【问题描述】:
我创建了一个登录并尝试保存用户名和用户 ID 会话,但我在这一行遇到错误
mAppPreference.setUserID(userid);
错误是:-
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.android.mivas.AppContoller.AppPreference.setUserID(java.lang.String)' on a null object reference
这是我的登录类
公共类 LoginPagefrag 扩展 Fragment 实现 OnClickListener、MiFeelingBase {
private Intent i;
private int urlIndex=0;
private Button btnLogin;
private EditText edUserName,edPassword;
private String strUserName,strPassword;
private String strEmailID;
private MultipartEntity reqEntity;
private Dialog dialog;
private ProgressDialog pDialog;
Context cxt;
private SessionManager session;
SharedPreferences myPriference;
AppPreference mAppPreference;
public static final String TAG_USERID = "userid";
public static String TAG_USERNAME = "username";
private static final Pattern EMAIL_PATTERN = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.loginpage, container, false);
APIAccess.fetchData(LoginPagefrag.this, getActivity(), getActivity());
btnLogin=(Button)rootView.findViewById(R.id.btnLogin);
edUserName=(EditText)rootView.findViewById(R.id.edUserName);
edPassword=(EditText)rootView.findViewById(R.id.edPassword);
btnLogin.setOnClickListener(this);
return rootView;
}
@SuppressWarnings("unused")
private void initialiseNoramlVariable() {
cxt = getActivity();
mAppPreference = AppPreference.getInstance(cxt);
}
public void postLogin()
{
try
{
StringBody username=new StringBody(strUserName);
StringBody password=new StringBody(strPassword);
reqEntity = new MultipartEntity();
reqEntity.addPart("username", username);
reqEntity.addPart("password", password);
}
catch(Exception e)
{
System.out.println("err" + e);
}
}
public void postForgotPass()
{
try
{
StringBody emailid=new StringBody(strEmailID);
reqEntity = new MultipartEntity();
reqEntity.addPart("email", emailid);
}
catch(Exception e)
{
System.out.println("err" + e);
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.btnLogin :
if(edUserName.getText().toString().equalsIgnoreCase(""))
{
// Toast.makeText(LoginPagefrag.this, "enter username", Toast.LENGTH_SHORT).show();
}else if(edPassword.getText().toString().equalsIgnoreCase(""))
{
//Toast.makeText(LoginPagefrag.this, "enter pass", Toast.LENGTH_SHORT).show();
}else
{
strUserName=edUserName.getText().toString();
strPassword=edPassword.getText().toString();
urlIndex=0;
APIAccess.fetchData(LoginPagefrag.this, getActivity(), getActivity());
}
break;
}
}
@Override
public String httpPost() {
// TODO Auto-generated method stub
String response="";
if(urlIndex==0)
{
postLogin();
response=APIAccess.openConnection(StaticData.SABAKUCH_LOGIN, reqEntity);
}
return response;
}
@Override
public String httpAfterPost(String str) {
// TODO Auto-generated method stub
if(str!=null)
{
if(urlIndex==0)
{
if(SabaKuchParsechat.jsonStatus(str)==0)
{
// Toast.makeText(LoginPagefrag.this, SabaKuchParsechat.jsonErrorMessage(str), Toast.LENGTH_SHORT).show();
}
else if(SabaKuchParsechat.jsonStatus(str)==1)
{
LoginData obj=SabaKuchParsechat.parseLoginData(str);
Log.d("objj", "hello"+obj);
String userid = obj.strUserId;
String username= obj.strUserName;
mAppPreference.setUserID(userid);
mAppPreference.setUserName(username);
mAppPreference.setServerKey();
session.setLogin(true);
Intent iintt = new Intent(getActivity(),MainActivity.class);
startActivity(iintt);
}
}
}
return null;
}
private boolean CheckEmail(String email) {
return EMAIL_PATTERN.matcher(email).matches();
}
public ConnectivityManager getSystemService(String connectivityService) {
// TODO Auto-generated method stub
return null;
}
}
这是我的 AppPreference 类:-
public class AppPreference extends Application {
Context cxt;
private static final String SHARED_APP_PREFERENCE_NAME = "sabakuchapp_pref_key";
public static AppPreference mAppprefernce;
private SharedPreferences pref;
private Editor mEditor;
public AppPreference() {
super();
// TODO Auto-generated constructor stub
}
enum SharedPreferenceKey{
USER_ID, USER_NAME, SERVER_KEY;
}
private AppPreference (Context context){
pref = context.getSharedPreferences(SHARED_APP_PREFERENCE_NAME, Context.MODE_PRIVATE);
mEditor = pref.edit();
}
public AppPreference(Context cxt, SharedPreferences pref, Editor mEditor) {
super();
this.cxt = cxt;
this.pref = pref;
this.mEditor = mEditor;
}
public static AppPreference getInstance(Context context){
if(mAppprefernce == null){
mAppprefernce = new AppPreference(context);
}
return mAppprefernce;
}
public void setUserID(String id){
mEditor.putString(SharedPreferenceKey.USER_ID.toString(), id);
mEditor.commit();
}
public String getUserID(){
return pref.getString(SharedPreferenceKey.USER_ID.toString(), "");
}
public void setUserName(String name){
mEditor.putString(SharedPreferenceKey.USER_NAME.toString(), name);
mEditor.commit();
}
public String getUserName(){
return pref.getString(SharedPreferenceKey.USER_NAME.toString(), "");
}
public void setServerKey(){
String original = getUserID()+"_" + getUserName() + "_SBK";
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.update(original.getBytes());
byte[] digest = md.digest();
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
mEditor.putString(SharedPreferenceKey.SERVER_KEY.toString(), sb.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
mEditor.putString(SharedPreferenceKey.SERVER_KEY.toString(), "");
}
mEditor.commit();
return;
}
public String getServerKey(){
return pref.getString(SharedPreferenceKey.SERVER_KEY.toString(), "");
}
}
请让我知道我在这里缺少什么。提前致谢。
【问题讨论】:
-
好吧,否定标记先生。请解决这个问题并告诉我为什么要标记为负数,或者当您看到 NULLPOINTER 时标记为负数只是一种时尚????
-
见 Selvin,请帮我一个忙,首先尝试阅读我的完整问题,
-
请帮大家一个忙,阅读“什么是空指针异常,我该如何解决?” ...您永远不会分配 mAppPreference 并询问您为什么要获得 NPE ...
-
@Devraj:你是来寻求帮助的,请不要这么粗鲁。你可以看到我对你的问题的回答。
-
@Rohit5k2 是的,兄弟,我正在尝试您的解决方案,我对我的话感到非常抱歉。但是当有些人在阅读问题之前只是标记为否定时感觉不好。我已经提到过,请让我知道我在这里缺少什么。无论如何,如果我听起来很粗鲁,我真的很抱歉。
标签: android nullpointerexception sharedpreferences