Recibo la excepción del título cuando ejecuto mi aplicación. Lo que hace es que tiene un archivo .txt con palabras para un juego de Hangman y creo que la excepción se produce al acceder al archivo. Mi archivo, cuvinte.txt se encuentra en / assets /. Aquí está mi código (omití la parte de diseño / xml, que funciona bien):
public void onCreate() {
// all the onCreate() stuff, then this:
try {
AssetManager am = this.getAssets();
InputStream is = am.open("cuvinte.txt");
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader b = new BufferedReader(inputStreamReader);
String rand;
while((rand=b.readLine())!=null){
cuvinte.add(rand);
}
} catch (IOException e) {
Toast.makeText(this, "No words file", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
newGame(newG);
}
public void newGame(View view){
Random rand = new Random();
String stringCuvant = cuvinte.get(rand.nextInt(cuvinte.size()));
cuvant.setText("");
System.out.println(stringCuvant);
for(int i = 0; i< stringCuvant.length(); i++){
cuvant.append("_ ");
}
incercari.setText(valIncercari);
}
La función newGame () se llama tanto cuando se presiona el botón del nuevo juego como al comienzo de la actividad, en la función onCreate ().
setText()
función.Respuestas:
(Solo suposición, menos información de Exception stacktrace)
Creo que esta línea
incercari.setText(valIncercari);
arroja Excepción porquevalIncercari
esint
Entonces debería ser,
O
fuente
Integer.toString(valIncercari);
setText(int)
también se usa para obtener recursos de cadena por id. Y en Android toda la identificación de recursos tieneint
valor.Solo quería señalar otra razón por la que se puede generar este error si definió un recurso de cadena para una traducción de su aplicación pero no proporcionó un recurso de cadena predeterminado.
Ejemplo del problema:
Como puede ver a continuación, tenía un recurso de cadena para una cadena en español "get_started". Todavía se puede hacer referencia en el código, pero si el teléfono no está en español, no tendrá recursos para cargar y bloquearse al llamar
getString()
.values-es / strings.xml
Referencia al recurso
Logcat:
Solución al problema
Prevenir esto es bastante simple, solo asegúrese de tener siempre un recurso de cadena predeterminado
values/strings.xml
para que si el teléfono está en otro idioma, siempre tendrá un recurso al que recurrir.valores / cadenas.xml
values-es / strings.xml
values-es / strings.xml
values-de / strings.xml
fuente
Otro escenario que puede causar esta excepción es con DataBinding, es decir, cuando usa algo como esto en su diseño
Observe que la variable que estoy usando es un número entero y lo estoy asignando al campo de texto de TextView. Como TextView ya tiene un método con firma
setText(int)
, usará este método en lugar de usar elsetText(String)
y el valor. Por lo tanto, TextView piensa en su número de entrada como un valor de recurso que obviamente no es válido.La solución es convertir su valor int a una cadena como esta
fuente
Build
->Clean Project
en Android Studio para volver a generar clases de enlace de datos.Este problema ocurre principalmente debido al error en el
setText()
métodoLa solución es simple pon tu
Integer
valor convirtiéndolo enstring
tipo comofuente
En algún momento esto sucedió debido a que no me gustaba ninguna fuente, como si quisiera configurar un texto en una vista de texto desde el adaptador, entonces debería usar
Si escribes algo como
esto no funcionará y, en algún momento, no encontramos el recurso del archivo string.xml y se produce este tipo de error.
fuente
El uso de DataBinding y la configuración del fondo del texto de edición con recursos de la carpeta dibujable provoca la excepción.
Solución
Solo cambio el fondo de
android:background="@drawable/rectangle"
aandroid:background="@null"
Limpiar y reconstruir el proyecto.
fuente
Está asignando un valor numérico a un campo de texto. Debe convertir el valor numérico en una cadena con:
fuente