0

私はこのサイトに不慣れで、Android プログラミングも初めてなので、少し辛抱強く待つ必要があります。mysql データベースに接続するアプリを起動しましたが、asynctask が起動せず、アプリがクラスの直前で停止し、その理由が本当にわかりません。それで、私を助けてもらえますか?これは私のコードです:

public class Logar extends Activity {
EditText etUsuario, etSenha;
Button btLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.logar);

    etUsuario=(EditText) findViewById(R.id.editUsuario);
    etSenha=(EditText) findViewById(R.id.editSenha);
    btLogin=(Button) findViewById(R.id.button1);



    btLogin.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.i("logar", "entrou no evento");
            ArrayList<NameValuePair> parametrosPost = new ArrayList<NameValuePair>();
            parametrosPost.add(new BasicNameValuePair("usuario",etUsuario.getText().toString()));
            parametrosPost.add(new BasicNameValuePair("senha",etSenha.getText().toString()));
            Log.i("logar", "parametrosPost.add");



        }




class LoginTask extends AsyncTask<Void,Void,Void>{
    ArrayList<NameValuePair> parametrosPost = new ArrayList<NameValuePair>();
    String urlPost="http://192.168.1.131/android/logar.php";
    String urlGet="http://192.168.1.131/android/logar.php?usuario="+etUsuario.getText().toString()+"&senha="+etSenha.getText().toString();
    String respostaRetornada = null;
    @Override
    protected Void doInBackground(Void... args){
            Log.i("logar", "vai entrar no try");
            try {
                respostaRetornada = ConexaoHttpClient.executaHttpPost(urlPost, parametrosPost);
                //respostaRetornada = ConexaoHttpClient.executaHttpGet(urlGet);
                String resposta = respostaRetornada.toString();
                Log.i("logar", "resposta = "+resposta);
                resposta = resposta.replaceAll("\\s+", "");
                if (resposta.equals("1"))
                     startActivity(new Intent(Logar.this,MenuPrincipal.class));
                    //mensagemExibir("Login", "Usuario Válido PARABÉNS ");
                else
                    mensagemExibir("Login", "Usuario Inválido ????");
            }
            catch(Exception erro)
            {
                Log.i("erro", "erro = "+erro);
                Toast.makeText(Logar.this, "Erro.: "+erro, Toast.LENGTH_LONG).show();
            }
            return null;

        }


}
   public void mensagemExibir(String titulo, String texto)
   {
        AlertDialog.Builder mensagem = new AlertDialog.Builder(Logar.this);
        mensagem.setTitle(titulo);
        mensagem.setMessage(texto);
        mensagem.setNeutralButton("OK",null);
        mensagem.show();
   }
});
}
}

私はすべての助けに感謝します。ありがとうございました。

4

3 に答える 3

0

電話する必要があります

new LoginTask().execute();

どこか。

于 2013-11-13T21:11:33.740 に答える
0

を開始するには、そのメソッド (またはおそらく)AsyncTaskを呼び出す必要がありますが、これは、示したコードには表示されません。execute()executeOnExecutor

于 2013-11-13T21:12:01.407 に答える
0

doInBackground メソッド内から AlertDialog を表示することはできません。

アラート ダイアログの表示は UI スレッドで行う必要があるため、doInBackground メソッドから結果を返し、onPostExecute メソッドで結果を処理 (およびアラート ダイアログを表示) する必要があります。

于 2013-11-13T21:12:37.577 に答える