-2
I have a problem in my application, when consuming a web service in Json, the application is closing.
The idea of my application is I consume this web service to validate my email and password, and returning a Json with my user data(email, name and surname), I am recent in Android programming.
I’d like you to help me.
This code from Mainactivity.java
public class MainActivity extends AppCompatActivity {
    //Variaveis que serão utilizadas para ligar Java com XML
    private EditText et_email;
    private EditText et_senha;
    private TextView tv_esqueci_senha;
    private Button btn_registrar;
    private Button btn_acessar;
    private ProgressDialog progressDialog;
    private Context mContext;
    private String logAutenticacao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.telalogin);
        //Modificando o título da Activity tela de login
        setTitle(getString(R.string.telalogin_titulo_activity));
        //Métodos base
        inicializaVariavel();
        inicializaAcao();
    }
    //Inicializando as variaveis
    private void inicializaVariavel() {
        //Inicializando o context
        mContext = getBaseContext();
        //Edit Text
        et_email = (EditText) findViewById(R.id.telalogin_et_email);
        et_senha = (EditText) findViewById(R.id.telalogin_et_senha);
        //Buttons
        btn_registrar = (Button) findViewById(R.id.telalogin_btn_registrar);
        btn_acessar = (Button) findViewById(R.id.telalogin_btn_acessar_conta);
        //TextView
        tv_esqueci_senha = (TextView) findViewById(R.id.telalogin_tv_esqueci_senha);
    }
    //Método responsavel pelas ações da activity telalogin
    private void inicializaAcao() {
        //Ação do botão Registrar
        btn_registrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Criando uma intent e atribuindo a classe tela de registro do usuário
                //Encerrando a activity de login
                Intent mIntent = new Intent(mContext, TelaRegistrarUsuario.class);
                startActivity(mIntent);
                finish();
            }
        });
        //Método do botão acessar
        btn_acessar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Verifica se os campos estão preenchidos
                if (validaCampos()) {
                    //Criando intent e atribuindo a clase Tela Principal
                    //Encerrando a activity Tela de Login
                    Intent mIntent = new Intent(mContext, TelaPrincipal.class);
                    startActivity(mIntent);
                    finish();
                }
            }
        });
        //Método do TextView esqueci minha senha
        tv_esqueci_senha.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Criando intent e atribuindo a clase Tela Esqueci Senha
                //Encerrando a activity da Tela de Login
                Intent mIntent = new Intent(mContext, TelaEsqueciSenha.class);
                startActivity(mIntent);
                finish();
            }
        });
    }
    //Método de validação dos campos da activity
    private boolean validaCampos() {
        //Resgatando os valores que estão nos edittext
        String email = et_email.getText().toString().trim();
        String senha = et_senha.getText().toString().trim();
        //Verifica se o campo email esta vazio
        if (email.length() == 0){
            et_email.setError(getString(R.string.telalogin_mgserro_et_email_campo_vazio));
            return false;
        }else{
            //Verifica se o email digitado esta no formato correto
            if(!Funcoes.validaEmail(email)){
                et_email.setError(getString(R.string.telalogin_msgerro_et_email_email_formato_incorreto));
                return false;
            }
        }
        //Verifica se o campo senha esta vazio
        if (senha.length() == 0){
            et_senha.setError(getString(R.string.telalogin_msgerro_et_senha_campo_vazio));
            return false;
        }
        //Aqui deve ser realizado uma consulta no WebService e os
        //dados ser comparados
        //Executa o método de sincronização/Autenticação
        new SincronizaUsuario().execute();
        //
        if (logAutenticacao.equals("Erro")){
            Toast.makeText(mContext, R.string.telalogin_msgerro_emailesenha_incorretos,
                    Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
    private class SincronizaUsuario extends AsyncTask<Void, Integer, Void>{
        //
        String email = et_email.getText().toString().trim();
        String senha = ToolBox.md5(et_senha.getText().toString().trim());//Converte senha em MD5
        String funcao = "f15112012";
        @Override
        protected void onPreExecute() {
            //Exibe um mensage de dialogo para usuário
            //notificando que os dados estão sendo validados no webservice
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setCancelable(false);//Não pode cancelar a dialog
            progressDialog.setTitle("Autenticação"); //Titulo
            progressDialog.setMessage("Aguarde seus dados estão sendo validados no servidor!"); //Mensagem
            //Exibe dialog
            progressDialog.show();
        }
        @Override
        protected Void doInBackground(Void... params) {
            //
            try{
                //Cria e inicializa um objeto Gson
                Gson gsonUsuario = new Gson();
                //
                Transmissao_Env transmissao_env = new Transmissao_Env();
                transmissao_env.setEmail(email);
                transmissao_env.setSenha(senha);
                transmissao_env.setFuncao(funcao);
                //
                String resultado = ToolBox.comunicacao("http://192.168.0.8/wstictic/index.php", gsonUsuario.toJson(transmissao_env));
                //
                String parRes[] = resultado.split("#WSTAG#");
                //
                switch (parRes.length) {
                    case 2:
                        if (parRes[0].equals("0")) {
                            //
                            Transmissao_Rec rec = gsonUsuario.fromJson(parRes[1], Transmissao_Rec.class);
                            //
                            logAutenticacao = "Sucesso";
                        } else {
                            //
                            logAutenticacao = "Erro";
                        }
                        break;
                    default:
                        //
                        logAutenticacao = "Erro";
                        break;
                }
            }catch (Exception e){
                String erro = e.toString();
            }finally {
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            //
            progressDialog.dismiss();
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
//        if (id == R.id.action_settings) {
//            return true;
//        }
        return super.onOptionsItemSelected(item);
    }
}
						
What’s the mistake? Post the logcat.
– ramaral
Olá Ramara7 segue o log

11-06 16:13:50.744 12945-12945/tictic.code.dnsystem.com.br E/AndroidRuntime: FATAL EXCEPTION: main
11-06 16:13:50.744 12945-12945/tictic.code.dnsystem.com.br E/AndroidRuntime: Process: tictic.code.dnsystem.com.br, PID: 12945
11-06 16:13:50.744 12945-12945/tictic.code.dnsystem.com.br E/Androidruntime: java.lang.Nullpointerexception: Attempt to invoke virtual method 'Boolean java.lang.String.equals(java.lang.Object)' on a null Object Reference
– dnsfirmino
You are trying the equals method using the logAutentication variable, but it is null as it has not yet been initialized. Asynctask performs the operation in the background and returns later, that is, you are trying to compare before Asynctask returns. You could perform the comparison in Asynctask Onpostexecute or invoke an application method from it.
– Alisson
Alisson, thanks for the help I’ll make the changes and as soon as I finish warning if it worked.
– dnsfirmino
Alisson made the changes as you said and worked, but I’m not able to perform the comparisons in the onPostExecute method. @Override protected void onPostExecute(Void avoid) { super.onPostExecute(avoid); //Checking the webservice log if(logWs.equals("0") ){ //Creating Input and assigning the class Main Screen //Ending Activity Login Screen Intent mIntent = new Intent(mContext, Telaprincipal.class); startActivity(mIntent); Finish(); }
– dnsfirmino
Alisson was able to solve the problem on the line where I was converting the result of Json into an object, After this conversion I assign the value 0 to the error control variable Ws changed the order before converting I assign the value 0 to the control variable and it worked. I will test a few times as yet, as I don’t believe the error was in the sequence. But thank you so much for your help.
– dnsfirmino