Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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 获取数字格式异常?_Java_Android_Datetime_Null - Fatal编程技术网

Java 获取数字格式异常?

Java 获取数字格式异常?,java,android,datetime,null,Java,Android,Datetime,Null,我面临一个问题。我正在接收所有联系人及其最近的calldate,但当我尝试将calldate转换为日期格式时,如果long的值为null,则会引发NumberFormatException 我想知道如何将所有calldates转换为日期格式,但如果出现null,则不会将其转换为日期格式。下面是我的代码帮助plz mCursor.moveToFirst(); while(!mCursor.isAfterLast()) { St

我面临一个问题。我正在接收所有联系人及其最近的calldate,但当我尝试将calldate转换为日期格式时,如果long的值为null,则会引发NumberFormatException

我想知道如何将所有calldates转换为日期格式,但如果出现null,则不会将其转换为日期格式。下面是我的代码帮助plz

    mCursor.moveToFirst();

              while(!mCursor.isAfterLast()) {
                 String calldate="";

                    JSONObject contact = new JSONObject();
                    JSONObject parentCont = new JSONObject();
                    SharedPreferences settings = getSharedPreferences(Sesssion.PREF_NAME,0);
                    settings.getBoolean("phnosaved", true);  
                String usernumber=      settings.getString(Sesssion.knumber,"hey" );
                     String name = mCursor.getString(mCursor.getColumnIndex(Phone.DISPLAY_NAME));
                     String number = mCursor.getString(mCursor.getColumnIndex(Phone.NUMBER));
                     String selection = android.provider.CallLog.Calls.NUMBER+"="+"\""+number+"\"";
                     Log.d("selection query", "selection"+selection);
                     String Order = android.provider.CallLog.Calls.DATE + " DESC";
                              Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI,null, selection,null, null); 

                              if (managedCursor.moveToFirst ()) {
                                  do {

                            calldate= managedCursor.getString (managedCursor.getColumnIndex (android.provider.CallLog.Calls.DATE));
                                  break;

                                  } while (managedCursor.moveToNext());


                              }

                  //String   callDate = managedCursor.getString(managedCursor.getColumnIndex(android.provider.CallLog.Calls.DATE));

                    Date callDayTime = new Date(Long.valueOf(calldate));


                    //String dateColumn = cursorcalllog.getString(cursorcalllog.getColumnIndex(CallLog.Calls.DATE));

                     Log.d("CONTACT", "Name: " + name + "| Number: " + number+"Recently Called"+callDayTime);


logcat:-

04-03 13:13:52.231: E/AndroidRuntime(16548): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.socialize_us/com.example.socialize_us.PhoneBookActivity}: java.lang.NumberFormatException: Invalid long: ""
04-03 13:13:52.231: E/AndroidRuntime(16548):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2084)
04-03 13:13:52.231: E/AndroidRuntime(16548):    at android.app.ActivityThread.startActivityNow(ActivityThread.java:1924)
04-03 13:13:52.231: E/AndroidRuntime(16548):    at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
04-03 13:13:52.231: E/AndroidRuntime(16548):    at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
你可以试试

if (calldate != null && !calldate.isEmpty()) 
    Date callDayTime = new Date(Long.valueOf(calldate));
问题是

长。价值(“”)

将抛出异常

所以 打电话之前

 Date callDayTime = new Date(Long.valueOf(calldate));
确保calldate或“”不等于“”


尝试在日志中打印calldate的值,我猜它是空字符串。只是一种预感:if条件验证为false。您可以查看以下问题:
    if(!calldate.trim.equals("")) {    Date callDayTime = new Date(Long.valueOf(calldate));}