mangstadt / ez-vcard

A vCard parser library for Java
Other
399 stars 92 forks source link

java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.mangstadt.vinnie.SyntaxStyle ezvcard.VCardVersion.getSyntaxStyle()' on a null object reference #69

Closed ZeroCool00 closed 7 years ago

ZeroCool00 commented 7 years ago

this is what i done and i got error..

btnContact.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if(checkandRequestPermission()){
                        VCard vCard = Ezvcard.parse(resultText).first();

                        File vcfFile = new File(getActivity().getExternalFilesDir(null), "generated.vcf");

                        try {
                            vCard.write(vcfFile); <<---- error  generated for this line ----- >>
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                        Intent i = new Intent();
                        i.setAction(android.content.Intent.ACTION_VIEW);
                        i.setDataAndType(Uri.fromFile(vcfFile), "text/x-vcard");
                        startActivity(i);
                    }
                }
            });

why there is null pointer exception? am i missing something here?
result text contain contact's information. and i m trying to store those info in my contact application

code trace here...


                                                                     /AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.http5000.qrreader.android, PID: 12476
                                                                               java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.mangstadt.vinnie.SyntaxStyle ezvcard.VCardVersion.getSyntaxStyle()' on a null object reference
                                                                                   at ezvcard.io.text.VCardWriter.<init>(VCardWriter.java:151)
                                                                                   at ezvcard.io.text.VCardWriter.<init>(VCardWriter.java:143)
                                                                                   at ezvcard.io.chain.ChainingTextWriter.go(ChainingTextWriter.java:203)
                                                                                   at ezvcard.io.chain.ChainingTextWriter.go(ChainingTextWriter.java:192)
                                                                                   at ezvcard.VCard.write(VCard.java:190)
                                                                                   at com.http5000.qrreader.android.fragment.OneFragment$3.onClick(OneFragment.java:132)
                                                                                   at android.view.View.performClick(View.java:5207)
                                                                                   at android.view.View$PerformClick.run(View.java:21168)
                                                                                   at android.os.Handler.handleCallback(Handler.java:746)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:148)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
mangstadt commented 7 years ago

Thank you for the report. This is a bug. Fixed in 68278719de4ad6232aa6c4711314a28688244e92.

Work-around:

Use the VCardWriter class instead:

VCard vCard = ...
File vcfFile = ...

VCardWriter writer = null;
try {
  writer = new VCardWriter(vcfFile, vCard.getVersion());
  writer.write(vCard);
} finally {
  if (writer != null) { writer.close(); }
}
ZeroCool00 commented 7 years ago

Thanks man.. its working now.. your project is very helpful..