Recebo a exceção do título quando executo meu aplicativo. O que ele faz é ter um arquivo .txt com palavras para um jogo da forca e acho que a exceção é lançada ao acessar o arquivo. Meu arquivo, cuvinte.txt, está localizado em / assets /. Aqui está o meu código (eu pulei a parte do layout / xml, que funciona bem):
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);
}
A função newGame () é chamada quando o novo botão do jogo é pressionado e no início da atividade, na função onCreate ().
setText()
função.Respostas:
(Apenas suposição, menos informações do rastreamento de pilha de exceção)
Eu acho que essa linha
incercari.setText(valIncercari);
lança Exception porquevalIncercari
éint
Então deveria ser,
Ou
fonte
Integer.toString(valIncercari);
setText(int)
também é usado para obter recursos de string por ID. E no Android, todos os IDs de recursos têmint
valor.Só queria apontar outro motivo para o erro: se você definiu um recurso de sequência para uma tradução do seu aplicativo, mas não forneceu um recurso de sequência padrão.
Exemplo do problema:
Como você pode ver abaixo, eu tinha um recurso de string para uma string espanhola "get_started". Ele ainda pode ser referenciado no código, mas se o telefone não estiver em espanhol, ele não terá recursos para carregar e travar ao ligar
getString()
.values-es / strings.xml
Referência ao recurso
Logcat:
Solução para o problema
Evitar isso é bastante simples, verifique se você sempre tem um recurso de string padrão
values/strings.xml
para que, se o telefone estiver em outro idioma, ele sempre tenha um recurso para o qual retornar.values / strings.xml
values-pt / strings.xml
values-es / strings.xml
values-de / strings.xml
fonte
Outro cenário que pode causar essa exceção é o DataBinding, ou seja, quando você usa algo assim no seu layout
Observe que a variável que estou usando é um número inteiro e a estou atribuindo ao campo de texto do TextView. Como o TextView já possui um método com assinatura,
setText(int)
ele usará esse método em vez de usar osetText(String)
e converter o valor. Assim, o TextView considera seu número de entrada como um valor de recurso que obviamente não é válido.A solução é converter seu valor int para uma string como esta
fonte
Build
->Clean Project
no Android Studio para gerar novamente as classes de Ligação de dados.Esse problema ocorre principalmente devido ao erro no
setText()
métodoA solução é simples, coloque seu
Integer
valor convertendo-o emstring
tipofonte
Às vezes isso aconteceu devido a não gostar de nenhuma fonte, como se eu quiser definir um texto em um textview do adaptador, então devo usar
Se você escrever algo como
isso não funcionará e, em algum momento, não encontrarmos o recurso no arquivo string.xml, ocorrerá esse tipo de erro.
fonte
Usar DataBinding e definir plano de fundo para o edittext com recursos da pasta drawable causa a exceção.
Solução
Eu apenas mudo o fundo de
android:background="@drawable/rectangle"
paraandroid:background="@null"
Limpe e reconstrua o projeto.
fonte
Você está atribuindo um valor numérico a um campo de texto. Você precisa converter o valor numérico em uma string com:
fonte