Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t将数据保存到SharedReferences_Java_Android - Fatal编程技术网

Java Can';t将数据保存到SharedReferences

Java Can';t将数据保存到SharedReferences,java,android,Java,Android,当我忘记存储卡SharePreference和错误时,我在将数据保存到SharePreference时遇到问题 我的日志 java.lang.NullPointerException: Attempt to invoke virtual method 'void com.novum.smrtkarta.SharedPreference.saveCardToSharedPreference(android.content.Context, java.util.ArrayList)' on a n

当我忘记存储卡SharePreference和错误时,我在将数据保存到SharePreference时遇到问题

我的日志

 java.lang.NullPointerException: Attempt to invoke virtual method 'void com.novum.smrtkarta.SharedPreference.saveCardToSharedPreference(android.content.Context, java.util.ArrayList)' on a null object reference
                                                                     at com.xxx.smrtkarta.activity.ScanQrCodeActivity$3$1.run(ScanQrCodeActivity.java:285)
                                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
类将数据卡保存到SharePreference ScanQrCodeActivity.java

Default app = (Default) getApplicationContext();
 cardList = app.getListCard();
 Card card = new Card(numberCard, path3, base32, OTP, nameCard, intervalTotp, getDate(), expirationDate);

  if (containsCard(cardList, numberCard, expirationDate)) {
               showAlterDialog("Błąd tworzenia karty", "Podana karta  istnieje w telefonie.");
       } else {
                       cardList.add(card);
                       app.setListCard(cardList);
                       cardList = new ArrayList<Card>();
                       cardList = app.getListCard();

                        //   Toast.makeText(getApplicationContext(),"Rozmair listy"+cardList.size(),Toast.LENGTH_SHORT).show();
                        sharedPreference.saveCardToSharedPreference(mContext,cardList); //Here comes the error message
defaultapp=(默认)getApplicationContext();
cardList=app.getListCard();
卡片=新卡(号码卡、路径3、base32、OTP、名片、intervalTotp、getDate()、过期日期);
if(包含卡片(卡片列表、卡号、到期日期)){
showAlterDialog(“Błd tworzenia karty”、“Podana karta istnieje w telefonie”);
}否则{
卡片列表。添加(卡片);
应用程序设置列表卡(卡片列表);
cardList=newarraylist();
cardList=app.getListCard();
//Toast.makeText(getApplicationContext(),“Rozmair listy”+cardList.size(),Toast.LENGTH\u SHORT.show();
SharedReference.SaveCardToSharedReference(mContext,cardList);//下面是错误消息
SharedReference.java

public class SharedPreference {

    public static final String PREFS_NAME = "LIST_CARD";
    public static final String CARD = "CARD";

    public SharedPreference() {
    }

    public void saveCardToSharedPreference(Context context, ArrayList<Card> cardList) {

        SharedPreferences settings;
        SharedPreferences.Editor editor;

        settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        editor = settings.edit();
        Gson gson = new Gson();
        String jsonString = gson.toJson(cardList);
        editor.putString(CARD, jsonString);
        editor.commit();
    }
}
公共类共享引用{
公共静态最终字符串PREFS_NAME=“LIST_CARD”;
公共静态最终字符串CARD=“CARD”;
公共共享引用(){
}
public void SaveCardToSharedReference(上下文上下文,ArrayList cardList){
共享引用设置;
SharedReferences.Editor;
设置=context.getSharedReferences(PREFS\u NAME,context.MODE\u PRIVATE);
editor=settings.edit();
Gson Gson=新的Gson();
字符串jsonString=gson.toJson(cardList);
putString(CARD,jsonString);
commit();
}
}
Default.java

public class Default extends Application {

    public ArrayList<Card> listCard = new ArrayList<Card>();

    public String uuidString;


    public String getUuidString() {
        return uuidString;
    }

    public void setUuidString(String uuidString) {
        this.uuidString = uuidString;
    }

    public ArrayList<Card> getListCard() {
        return listCard;
    }

    public void setListCard(ArrayList<Card> listCard) {
        this.listCard = listCard;
    }

    @Override

    public void onCreate() {
        super.onCreate();

        uk.co.chrisjenx.calligraphy.CalligraphyConfig.initDefault(new uk.co.chrisjenx.calligraphy.CalligraphyConfig.Builder()
                .setDefaultFontPath("fonts/OpenSans-Regular.ttf")
                .setFontAttrId(R.attr.fontPath)
                .build()
        );

    }
}
公共类默认扩展应用程序{
public ArrayList listCard=new ArrayList();
公共字符串uuistring;
公共字符串getUUIString(){
返回uuistring;
}
public void setUUIString(字符串UUIString){
this.uuistring=uuistring;
}
公共阵列列表getListCard(){
返回列表卡;
}
公共作废setListCard(ArrayList listCard){
this.listCard=listCard;
}
@凌驾
public void onCreate(){
super.onCreate();
initDefault(new uk.co.chrisjenx.phraphic.CalligraphyConfig.Builder())
.setDefaultFontPath(“font/OpenSans Regular.ttf”)
.setFontAttrId(R.attr.fontPath)
.build()
);
}
}
cardList=newarraylist();

cardList=app.getListCard();


请从您的代码中对上面的粗体代码进行注释,然后重试。

所以您没有在google上搜索NullPointerException!这要怪您。正如@greenapps所说,处理异常是第一件事,通过google了解它,然后阅读stacktrace查找原因。但我对此投了赞成票,因为这个问题仍然写得很好,并且提供了包括异常在内的所有异常选项!您的自定义对象
SharedReference
ScanQrCodeActivity.java
中为空。您必须对其进行初始化…您问了一个类似的问题,但似乎没有花时间理解问题,只是盲目地再问一次。顺便说一句,不要将自定义类命名为Android类。
SharedReferences已经存在,随时可能让您感到困惑。。。
cardList.add(card);
app.setListCard(cardList);