Android: conversión de cadena a valor largo

Estoy creando una aplicación de Android bastante simple que es básicamente un temporizador, estoy tratando de hacerla para que pueda establecer la duración del temporizador en la configuración y luego, usando las preferencias, recupere el valor y configúrelo como la duración del temporizador. Puedo recuperar el valor de las preferencias y simplemente mostrarlo.

Pero cuando intento convertir el valor de la cadena (es decir, 1) en un valor largo usando Long.parseLong(string) o Long.valueOf(String) y Long.valueOf(Int), no recibo ningún error en el código. pero cuando intento iniciar la aplicación, se cierra a la fuerza y ​​el registro de errores dice que es causado por NumberFormatException. Aquí está la sección del código que estoy usando, también si elimino la línea que dice Long.ParseLong... todo lo demás funciona bien.

        private long interval =    1000 ;
        private long startTime = 30000;



        /** Called when the activity is first created. */
        public void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_countdown_timer);

                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

                 StringBuilder builder = new StringBuilder();
                 builder.append("\n"+ prefs.getString("timerLength","NULL"));
                 startTime = Long.parseLong(builder.toString());




                 TextView view = (TextView)findViewById(R.id.showTimer);
                 view.setText(builder.toString());

preguntado el 28 de julio de 12 a las 10:07

Creo que su preferencia devuelve NULL. Por lo tanto, no se pudo analizar. -

No creo que lo haga, ya que puedo recuperar el valor y mostrarlo como una cadena:

Yeh NumberFormatEception, aunque no es lo que eso significa:

2 Respuestas

Por favor, elimine "\n"

StringBuilder builder = new StringBuilder();
builder.append(prefs.getString("timerLength","NULL"));
startTime = Long.parseLong(builder.toString());

Respondido 28 Jul 12, 10:07

El problema es el '\n' personaje. La cadena solo debe contener un long como una cadena para que se analice con éxito.

Respondido 28 Jul 12, 10:07

También debería eliminar las preferencias que devuelven nulo. Si devuelve nulo, puede volver a lanzar una excepción. ¿No tiene sentido usar una captura de prueba también? - San

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.