-1
// Get the text file
        File file = new File(Environment.getExternalStorageDirectory()
                + "/Config/GPSListenerminTime.cfg");

        // Read text from file
        StringBuilder GPSListenerminTime = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;

            while ((line = br.readLine()) != null) {
                GPSListenerminTime.append(line);
                GPSListenerminTime.append('\n');

            }
        } catch (IOException e) {
            // TODO You'll need to add proper error handling here
        }   

我想使用此代码从文件中读取一个数字,它运行良好,但我如何在 requestLocationUpdates 中使用该数字作为长值?我试图以这种方式使用它,但它不起作用:

        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, Long.valueOf(String.valueOf(GPSListenerminTime)), 0, this);

我的文件只包含这个数字:10000 我在启动服务时收到这个错误:

  08-07 15:32:45.599: E/AndroidRuntime(19878): java.lang.RuntimeException:
Unable to create service com.example.gpslog.DataLogService: java.lang.NumberFormatException: 10000
4

4 回答 4

1

您当前使用Long.valueOf此封装Long.parseLong,因此您可以忽略建议使用它的答案。

当您收到数字格式异常时,您的字符串可能包含前导或尾随空格,请尝试使用;

Long.valueOf(String.valueOf(GPSListenerminTime).trim())
于 2013-08-07T13:37:25.753 回答
1

这是一个应该可以工作的代码片段:

long requestLong = Long.parseLong(GPSListenerminTime.toString());

基本上,您将 your 转换StringBuilder为常规String,然后让Long类解析它。

于 2013-08-07T13:41:52.323 回答
0

Try like this :

StringBuilder oBuilder = your_string_builder;
long myLong = Long.parseLong(oBuilder.toString());
于 2013-08-07T13:42:48.277 回答
0

NumberFormatException 是解析“1000/n”字符串的结果。只需使用 trim() 方法删除所有空字符:

Long.valueOf(yourStringBuilder.toString().trim());
于 2013-08-07T13:44:39.687 回答