无法弄清楚parselong和字符串(Android应用程序)

时间:2014-08-21 18:35:40

标签: java android android-edittext

我已经阅读了很多关于这个主题的问题,我读过的所有内容似乎表明我做的是正确的,但问题仍然存在(令人沮丧)。我有一个用户输入编辑文本值,用于倒数计时器,我知道需要一个长(原始)变量。所以我使用Long.pasreLong(Stringvarible)获得了很长时间。这不起作用。我添加了一个try catch,它似乎表明解析存在问题,但我无法弄清楚问题。请参阅以下代码部分:

  editText_Time.setOnEditorActionListener(new OnEditorActionListener(){

        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
          boolean handled = false;
          if (actionId == EditorInfo.IME_ACTION_DONE||
                    actionId == EditorInfo.IME_ACTION_SEARCH ||
                    event.getAction() == KeyEvent.ACTION_DOWN &&
                    event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {

              startTime_String = editText_Time.getText().toString();

              //Something's wrong with the parse long portion 

              startTime_Long = Long.parseLong(startTime_String);

                //  try {
                //  startTime_Long = Long.parseLong(startTime_String);       
                //  } catch (NumberFormatException e) {
                // System.out.println("NumberFormatException: " + e.getMessage());
                //  }

              startTime = startTime_Long;

              countDownTimer = new MyCountDownTimer(startTime, interval);
              return false;
          }
          return handled;
      }
  }); 

1 个答案:

答案 0 :(得分:0)

如果getText()返回空CharSequence,您将获得NumberFormatException

为了避免它,您可以执行以下操作

startTime_String = editText_Time.getText().toString().trim();
if (startTime_String.length() == 0) {
    startTime_Long = 0;
} else {
    startTime_Long = Long.parseLong(startTime_String);
}

当然,EditText应该是数字

android:inputType="number"