>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Android com MySQL Online - Aula 5


Boa tarde, meu codigo não cadastra e não consigo achar o erro, sempre que rodo ele fala que o aplicativo parou de funcionar.


package mmarques.com.br.androidcommysql;

import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class CadastroActivity extends AppCompatActivity {

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


Button btnCadastro = (Button) findViewById(R.id.btnCadastro);
btnCadastro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

EditText txtNome = (EditText) findViewById((R.id.txtNome));
EditText txtEmail = (EditText) findViewById((R.id.txtEmail));
try{
StringBuilder strURL = new StringBuilder();
strURL.append("http://192.168.0.105/inserir.php?");
strURL.append("nome=");
strURL.append(URLEncoder.encode(txtNome.getText().toString(), "UTF-8"));

strURL.append("&email=");
strURL.append(URLEncoder.encode(txtEmail.getText().toString(), "UTF-8"));
new HttpRequest().execute(strURL.toString());
} catch (Exception ex){

}


}
});
}

private class HttpRequest extends AsyncTask{

@Override
protected String doInBackground(String... params) {
String retorno = null;
try {
String urlHttp = params[0];
URL url = new URL(urlHttp);
HttpURLConnection http = (HttpURLConnection) url.openConnection();
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader bfr = new BufferedReader(ips);
retorno = bfr.readLine();

} catch (Exception ex){

}
return retorno;
}

@Override
protected void onPostExecute(String result){
if (result.equals("YES")){
Toast.makeText(getBaseContext(), "Cliente cadastrado com sucesso!", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getBaseContext(), ListarActivity.class));
}else {
Toast.makeText(getBaseContext(), "Erro ao cadastrar o cliente!", Toast.LENGTH_SHORT).show();
}
}

}
}



7 Respostas


Olá

Você adicionou permissão de INTERNET?




Sim. Já cheguei a desinstalar e instalar o Android Studio.
O engraçado é que fiz isso e agora o erro mudou de lugar, fala que parou também porém mostra o erro na linha 27 do código acima.
Estou usando a versão estável a 1.5.1, pode ter alguma coisa a ver?

Pois pelo que eu entendi no curso usa a versão preview.




Você tem o botão btnCadastro no layout activity_cadastro?

Não pode ser erro de versão, pois o curso foi testando também nessa IDE.




Eu realmente tinha me esquecido de colocar o nome no botão, porém mesmo colocando o erro continua.
Entro na tela de cadastro e na hora que clico em salvar ele gera o erro na linha 52 e 71.




Olá

Qual erro gerado nessas linhas?




04-12 02:49:06.255 4444-4474/br.com.mmarques.androidcommysql E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab7d1840
04-12 02:49:09.110 4444-4444/br.com.mmarques.androidcommysql D/AndroidRuntime: Shutting down VM
04-12 02:49:09.110 4444-4444/br.com.mmarques.androidcommysql E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.mmarques.androidcommysql, PID: 4444
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at br.com.mmarques.androidcommysql.CadastroActivity$HttpRequest.onPostExecute(CadastroActivity.java:73)
at br.com.mmarques.androidcommysql.CadastroActivity$HttpRequest.onPostExecute(CadastroActivity.java:48)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-12 02:49:12.211 9779-9779/br.com.mmarques.androidcommysql W/System: ClassLoader referenced unknown path: /data/app/br.com.mmarques.androidcommysql-2/lib/x86




Bom dia,
Consegui descobrir qual era o problema.
O wamp estava com negação para acesso atraves do IP foi feito a liberação no httpd no apache e o sistema funcionou.
Segue a alteração:

# Require all granted
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all - ALTERE ESSA OPÇÃO PARA ALLOW E IRÁ FUNCIONAR.
Allow from 127.0.0.1
Allow from ::1
Allow from localhost

Obrigado pela atenção.