if (pausa == null) {no funciona
Utilizo if(pause == null)
para hacer algo cuando la pause
es null
. Pero consigo el error
the operator == is undefined for the argument type(s) long,null
- Array List Intent extra en Java
- Android: cómo reproducir video mp4 desde la URL?
- SearchView y título de la actividad en ActionBar
- Android compara cartas especiales
- Cambiar CharSequence primera letra a mayúsculas en android
Aquí está el código,
public class Timer extends CountDownTimer { long pause = (Long) null; public Timer(long startTime, long interval) { super(startTime, interval); } @Override public void onTick(long millisUntilFinished) { content.setText("Tijd over: " + millisUntilFinished / 100); } public void onPause(long millisUntilFinished) { if(pause == null) { pause = millisUntilFinished; content.setText("Tijd over: " + millisUntilFinished / 100); this.cancel(); } else { this.start(); } } @Override public void onFinish() { content.setText("Tijd is op!"); } }
Esta clase no está terminada, así que ignore el resto del código.
- Creación de una función "favorita" en una lista de preguntas que se asignan al azar
- ¿Por qué usamos la palabra clave "new" con una Interfaz en Java?
- Phonegap CLI con Java 8
- ¿No cierra el cursor o el objeto de la base de datos?
- Seleccionador de color de Android: actualizando la matriz de colores
- Ordenar la colección por varios campos en Kotlin
- Android SQLiteException "no such table" durante la compilación: tabla INSERT INTO
- Dagger para Android: Inyección de una actividad en el gráfico de objetos después de llamar a setContentView
La pause
variable es long
, por lo que la pause
nunca puede ser null
, y el compilador está confundido. Haga un Long
, o use algún indicador de invalidez dentro de la banda.
long pause = (Long) null;
debiera ser
Long pause = null; ^
long
es el tipo primitivo, pero Long
es el objeto wrapper de tipo long
.
Puede utilizar un valor de centinela en lugar de envolverlo como objeto.
long pause = -1; ... if(pause == -1 ) { //do something }
long
con un lowecase 'l' es un tipo primitivo en java, y no se puede almacenar null
en él. Null sólo se puede almacenar en referencias a clases. reemplazar el long
con Long
, y funcionará, porque Long
es un envoltorio para el primitivo, en realidad el almacenamiento de una referencia, que puede ser nulo.
Por favor, lea: http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
long
es primitivo. No puede ser nulo. Sólo las referencias a objetos pueden ser. Si realmente desea utilizar valor nulo para los números cambie el tipo de 'largo' a Long
.
long
es un tipo primitivo, no es un tipo de class
y por lo tanto pause
no es una "referencia" a un objeto, lo que significa que no puede ser null
. Si desea saber cuándo el temporizador está pausado, agregue una variable de indicador ; un boolean
.
Usted podría cambiar long
a Long
pero que parece innecesario, su código podría ser algo como esto y utilizar un boolean
:
public class Timer extends CountDownTimer { boolean isPaused = true; long pause = 0; // not sure what this is meant to store public Timer(long startTime, long interval) { super(startTime, interval); } @Override public void onTick(long millisUntilFinished) { content.setText("Tijd over: " + millisUntilFinished / 100); } public void onPause(long millisUntilFinished) { if(!isPaused) { isPaused = true; pause = millisUntilFinished; // don't know what this is for content.setText("Tijd over: " + millisUntilFinished / 100); this.cancel(); } else { this.start(); isPaused = false; } } @Override public void onFinish() { content.setText("Tijd is op!"); } }
El lenguaje java no soporta la noción de versión anulable de tipos primitivos como C # (vea esta pregunta sobre cómo presentar el tipo primitivo anulable int en Java? ). Por lo tanto, tendrá que utilizar el contenedor de clase Long
lugar del tipo primitivo long
.
public class Timer extends CountDownTimer { Long pause = null; // Rest of the code ... }
Esto tendrá un costo porque el tiempo de ejecución de Java tendrá que encajar y deshacer su valor cada vez que lo acceda o lo actualice. Dependiendo del uso de su código, esto puede degradar el rendimiento de su aplicación. Esto necesitará perfiles.
Otra opción es utilizar un valor que es "imposible" para representar un campo de pause
no inicializado. Si sabe que la pause
siempre será positiva, puede usar -1
para representar un campo no inicializado.
- Imagen que se muestra en Android Studio pero no en el teléfono
- Agregar sombra debajo TabBar – Diseño de material