Índice:
- Colocar letras maiúsculas onde elas pertencem
- Partindo de uma indicação de comutação
- Quando você compara dois valores, você usa um sinal duplo igual. A linha
- Você quer saber quando o usuário clica em um widget, quando uma animação termina ou quando algo acontece, para criar ouvintes:
- NullPointerException
- ao AndroidManifest
- no AndroidManifest
Vídeo: Windows 10 Como corrigir o erro que impede abertura de aplicativos nativos do sistema 2024
Todo mundo comete erros. É um fato da vida. No entanto, se você atende o conselho aqui, não precisa ser um fato de sua programação Java.
Colocar letras maiúsculas onde elas pertencem
Java é uma linguagem sensível a maiúsculas e minúsculas, então você realmente tem que se importar com seus p s e q s - juntamente com todas as outras letras do alfabeto. Aqui estão alguns conceitos a ter em mente ao criar programas Java:
- As palavras-chave de Java são completamente minúsculas. Por exemplo, em uma declaração Java
se
, a palavra se não pode ser Se ou IF. - Quando você usa nomes da Interface de Programação de Aplicativos (API) do Android, o caso dos nomes deve coincidir com o que aparece na API.
- Os nomes que você compõe você mesmo devem ser capitalizados da mesma maneira ao longo de todo o programa. Se você declarar uma variável
myAccount
, não pode referir-se a ele comoMyAccount
,myaccount
ouMyaccount
. Se você capitalizar o nome da variável de duas maneiras diferentes, a Java pensa que está se referindo a duas variáveis completamente diferentes.
Partindo de uma indicação de comutação
Se você não sair de uma indicação
comutador
, você obtém uma queda. Por exemplo, se o valor de
rolar
for
7
, o código a seguir imprime todas as três palavras -
ganhar
,
continuar
e > perca
:
mudar (rolar) {
caso 7:
textView. setText ("win");
caso 10:
caso 12:
textView. setText ("perder");
}
Comparando valores com um sinal igual duplo
Quando você compara dois valores, você usa um sinal duplo igual. A linha
se (inputNumber == randomNumber)
está correta, mas a linha
se (inputNumber = randomNumber)
não está correta.
Adicionando ouvintes para lidar com eventos
Você quer saber quando o usuário clica em um widget, quando uma animação termina ou quando algo acontece, para criar ouvintes:
classe pública MainActivity extends Activities
implementa OnClickListener, AnimationListener
{ …
public void onClick (View view) {
…
}
public void onAnimationEnd (animação de animação) {
…
} < Quando você cria ouvintes, você deve se lembrar de configurar os ouvintes:
widget ImageView = novo ImageView (este);
widget.
setOnClickListener
(este);
animação.
setAnimationListener
(este); … Se você esqueceu a chamada para
setOnClickListener
, nada acontece quando você clica no widget.Clicar no widget mais uma segunda vez não ajuda.
Definindo os construtores necessários
Quando você define um construtor com parâmetros, como em
temperatura pública (número duplo)
Java não cria mais um construtor sem parâmetros padrão para você. Em outras palavras, você não pode mais chamar
Temperatura roomTemp = nova Temperatura ();
, a menos que você defina explicitamente o seu próprio construtor
Temperatura
sem parâmetros.
Reparando referências não estatísticas
Se você tentar compilar o seguinte código, você receberá uma mensagem de erro:
classe WillNotWork {
String greeting = "Hello";
static void show () {
textView. setText (saudação);
}
}
Você recebe uma mensagem de erro porque o método
mostrar
é estático, mas
saudação
não é estático.
Permanecendo dentro dos limites em uma matriz
Quando você declara uma matriz com dez componentes, os componentes têm índices de 0 a 9. Em outras palavras, se você declarar
int convidados [] = novo int [10];
você pode consultar os componentes da série
convidados
escrevendo
convidados [0]
,
convidados [1]
, e assim por diante, até o final
convidados [9]
. Você não pode gravar
convidados [10]
, porque a matriz
convidados
não possui nenhum componente com o índice 10.
Antecipando ponteiros nulos
A
NullPointerException
ocorre quando você chama um método em uma expressão que não tem valor "legítimo". Aqui está um exemplo:
classe pública MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (layout R. activity_main);
// Você esquece a linha findViewById.
}
public void onButtonClick (vista de exibição) {
textView. setText ("Olá");
}
}
Em Java, uma variável de tipo de referência que não aponta para nada tem o valor
null
. Então, neste exemplo, o valor da variável
textView
é
null
.
Você não pode chamar o método
setText
no valor
null
. Para esse assunto, você não pode chamar nenhum método no valor
null
. Quando Java tenta executar
textView. setText ("Olá")
, o aplicativo falha. O usuário vê uma
aplicativo parou
mensagem. Se você estiver testando o aplicativo usando o Android Studio, você verá NullPointerException no painel Logcat.
Para evitar esse tipo de calamidade, pense duas vezes sobre qualquer chamada de método em seu código. Se a expressão antes do ponto possivelmente pode ser
null, adicione código de tratamento de exceção ao seu programa:
public void onButtonClick (vista de exibição) {
tente {
textView. setText ("Olá");
} catch (NullPointerException e) {
Toast. makeText (isto, "O aplicativo se recuperou de um erro.",
Toast. LENGTH_LONG). exposição();
}
}
Usando permissões
Alguns aplicativos requerem permissões explícitas. Por exemplo, alguns aplicativos conversam com os servidores do Twitter pela Internet. Isso não funciona a menos que você adicione um elemento
ao AndroidManifest
do aplicativo.xml
:
Se você esqueceu de adicionar o elemento
ao seu
AndroidManifest. xml
, o aplicativo não pode se comunicar com os servidores do Twitter. O aplicativo falhou sem exibir uma mensagem de erro útil. Que pena!
A atividade não encontrada
Se você criar uma segunda atividade para seu aplicativo, você deve adicionar um novo elemento
no AndroidManifest
do aplicativo. arquivo xml
. O elemento pode ser tão simples quanto
mas, na maioria dos casos, o elemento é um pouco mais complicado.
Se você não adicionar este elemento
, o Android não pode encontrar a classe
MySecondActivity
, mesmo que o
MySecondAcitivity. O arquivo java
está no diretório do projeto do aplicativo. Seu aplicativo trava com uma
ActivityNotFoundException
.
E isso faz toda a diferença.