Processo para ao entrar em "onClick"

12 respostas
Andre_Rosa

Tenho o seguinte código:

package pegaip.pacote;

import java.net.InetAddress;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Pega_IPActivity extends Activity {
    /** Called when the activity is first created. */
    EditText edtEndereco;
    Button btnGerar;
    TextView txtIP;
    
    InetAddress inet = null;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        edtEndereco = (EditText) findViewById(R.gerar.edtEndereco);
        btnGerar = (Button) findViewById(R.gerar.btnPegar);
        txtIP = (TextView) findViewById(R.gerar.txtIP);
        
        btnGerar.setOnClickListener(new View.OnClickListener() {
            
            public void onClick(View arg0) {
                try {
                    inet = InetAddress.getByName(edtEndereco.getText().toString());
                } catch (UnknownHostException ex) { 
                    txtIP.setText("Servidor não encontrado!");
                }
                txtIP.setText("IP: " + inet.getHostAddress());
                
            }
        });
    }
}

O que o app faz: solicita o endereço de um site e pega o IP deste site. O programa compila e roda, no entanto, ao clicar no botão para pegar o IP aparece a seguinte mensagem no emulador:

the application Pega_IP (process pegaip.pacote)has stopped unexpectedly. Please try again

Alguém aí sabe como eu resolvo isso?

PS: Procurei no Google à respeito desta mensagem, encontrei referências, mas nada satisfatório.

Obrigado!

12 Respostas

Marky.Vasconcelos

Qual o log do erro?

Andre_Rosa

Onde eu vejo este log, Marky? Você está falando do output na IDE?

Andre_Rosa

Uma coisa importante que eu esqueci de dizer: Se eu colocar “localhost”, ele me retorna 127.0.0.1, ou seja, em rede local funciona. Eu coloquei a permissão como Dangerous, no arquivo AndroidManifest.xml, mas o problema persiste.

Marky.Vasconcelos

No Eclipse, vá em Window > Show view > Other… vá em Android > Logcat, esse é log do device.

Andre_Rosa

Beleza, o log é esse:
http://pastebin.com/r3NKqUWv

Obrigado.

felipebonezi

Tenta colocar em um Thread().

Andre_Rosa

Será que isso resolveria? Este mesmo código, adaptado para J2SE, funciona perfeitamente.

felipebonezi

Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.

Andre_Rosa

felipebonezi:
Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.

Entendi. Vou tentar fazer isso amanhã. Obrigado por esclarecer.

Marky.Vasconcelos

felipebonezi:
Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.

Como assim é necessario colocar em uma Thread para pegar coisas da internet? Eu tenho alguns processos sincronos que fazem isso sem precisar de outras threads.

Mas a permission no AndroidManifest é necessaria sim.

felipebonezi

Marky.Vasconcelos:
felipebonezi:
Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.

Como assim é necessario colocar em uma Thread para pegar coisas da internet? Eu tenho alguns processos sincronos que fazem isso sem precisar de outras threads.

Mas a permission no AndroidManifest é necessaria sim.

Geralmente quando coloco uma solicitação na net PESADA coloco em Thread() para não travar a aplicação podendo gerar algum erro…

Marky.Vasconcelos

Pode crer, se não ele não sabe para quem mandar os eventos por que os componentes não respondem.

Criado 10 de setembro de 2011
Ultima resposta 12 de set. de 2011
Respostas 12
Participantes 3