J'obtiens l'exception du titre lorsque j'exécute mon application. Ce qu'il fait, c'est qu'il a un fichier .txt avec des mots pour un jeu du pendu et je pense que l'exception est levée lors de l'accès au fichier. Mon fichier, cuvinte.txt se trouve dans / assets /. Voici mon code (j'ai sauté la partie layout / xml, qui fonctionne très 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 fonction newGame () est appelée à la fois lorsque le bouton nouveau jeu est pressé et au début de l'activité, dans la fonction onCreate ().
setText()
fonction.Réponses:
(Juste une hypothèse, moins d'informations sur Exception stacktrace)
Je pense que cette ligne
incercari.setText(valIncercari);
jette une exception parce quevalIncercari
c'estint
Donc ça devrait être,
Ou
la source
Integer.toString(valIncercari);
setText(int)
également utilisé pour obtenir une ressource de chaîne par identifiant. Et dans Android, tout identifiant de ressource a uneint
valeur.Je voulais simplement souligner une autre raison pour laquelle cette erreur peut être générée si vous avez défini une ressource de chaîne pour une traduction de votre application mais que vous n'avez pas fourni de ressource de chaîne par défaut.
Exemple du problème:
Comme vous pouvez le voir ci-dessous, j'avais une ressource de chaîne pour une chaîne espagnole "get_started". Il peut toujours être référencé dans le code, mais si le téléphone n'est pas en espagnol, il n'aura aucune ressource à charger et se plantera lors de l'appel
getString()
.valeurs-es / strings.xml
Référence à la ressource
Logcat:
Solution au problème
Éviter cela est assez simple, assurez-vous simplement que vous avez toujours une ressource de chaîne par défaut
values/strings.xml
afin que si le téléphone est dans une autre langue, il aura toujours une ressource vers laquelle se rabattre.values / strings.xml
values-fr / strings.xml
valeurs-es / strings.xml
values-de / strings.xml
la source
Un autre scénario qui peut provoquer cette exception est avec DataBinding, c'est-à-dire lorsque vous utilisez quelque chose comme ça dans votre mise en page
Notez que la variable que j'utilise est un entier et que je l'attribue au champ de texte du TextView. Étant donné que le TextView a déjà une méthode avec la signature,
setText(int)
il utilisera cette méthode au lieu d'utilisersetText(String)
et de convertir la valeur. Ainsi, TextView considère votre numéro d'entrée comme une valeur de ressource qui n'est évidemment pas valide.La solution consiste à convertir votre valeur int en une chaîne comme celle-ci
la source
Build
->Clean Project
dans Android Studio pour régénérer les classes de liaison de données.Ce problème se produit principalement en raison de l'erreur de
setText()
méthodeLa solution est simple mettre votre
Integer
valeur en convertissant enstring
type commela source
Parfois, cela s'est produit en raison de ne fonder aucune source, comme si je veux définir un texte dans une vue de texte à partir de l'adaptateur, je devrais utiliser
Si vous écrivez quelque chose comme
cela ne fonctionnera pas et parfois, nous ne trouvons pas la ressource dans le fichier string.xml, ce type d'erreur se produit.
la source
L'utilisation de DataBinding et la définition de l'arrière-plan de l'edittext avec des ressources du dossier dessinable provoque l'exception.
Solution
Je change juste le fond de
android:background="@drawable/rectangle"
àandroid:background="@null"
Nettoyez et reconstruisez le projet.
la source
Vous affectez une valeur numérique à un champ de texte. Vous devez convertir la valeur numérique en une chaîne avec:
la source