2016-01-26 2 views
-2

Я немного новичок на Android, и моя кнопка не работает должным образом, когда я запускаю свое приложение. Вот мой Java код:Кнопка работает некорректно (андроидная студия)

package com.example.neak.phore; 

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

import com.loopj.android.http.AsyncHttpClient; 
import com.loopj.android.http.AsyncHttpResponseHandler; 
import com.loopj.android.http.RequestParams; 

import org.json.JSONArray; 
import org.json.JSONException; 

import java.util.ArrayList; 

import cz.msebera.android.httpclient.Header; 

public class MainActivity extends ActionBarActivity { 
    Button btLoginL; 
    EditText etEmail, etPassL; 
    TextView tvRegistrarGo; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btLoginL = (Button) findViewById(R.id.btLoginL); 
     etEmail = (EditText) findViewById(R.id.etEmailL); 
     etPassL = (EditText) findViewById(R.id.etPassL); 
     tvRegistrarGo = (TextView) findViewById(R.id.tvRegistrarGo); 
     final String email = etEmail.getText().toString(); 
     final String pass = etPassL.getText().toString(); 

     btLoginL.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       EnviarDatos(email, pass); 
      } 


     }); 
     tvRegistrarGo.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent registrar = new Intent(MainActivity.this, Registrar.class); 
       startActivity(registrar); 
      } 
     }); 
    } 

    public void EnviarDatos(String email, String pass){ 
     String URL = "192.168.2.15/android/login.php"; 
     RequestParams params = new RequestParams(); 
     params.put("email",email); 
     params.put("pass", pass); 
     AsyncHttpClient clienteL = new AsyncHttpClient(); 
     clienteL.put(URL, params, new AsyncHttpResponseHandler() { 
      @Override 
      public void onSuccess(int i, Header[] headers, byte[] bytes) { 
       getDataJson(new String(bytes)); 
      } 

      @Override 
      public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { 
       Toast.makeText(getApplicationContext(), "Fallo en la conexion", Toast.LENGTH_SHORT); 
      } 
     }); 
    } 
    public ArrayList<String> getDataJson(String response){ 
     ArrayList<String> Logstat = new ArrayList<>(); 
     try{ 
      JSONArray recoger = new JSONArray(response); 
      String status; 
      status=recoger.getJSONObject(0).getString("estado"); 
      comprobar(status); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return Logstat; 
    } 
    public void comprobar(String status){ 
     if(status.equals("0")){ 
      Toast.makeText(getApplicationContext(),"Usuario o contraseña incorrectos",Toast.LENGTH_SHORT); 
     }else{ 
      Toast.makeText(getApplicationContext(),"Login correcto",Toast.LENGTH_SHORT); 
     } 
    } 
} 

А вот мой XML-код:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="#25ae90" 
    tools:context="com.example.neak.phore.MainActivity"> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPersonName" 
     android:ems="10" 
     android:hint="Nombre de usuario" 
     android:id="@+id/etEmailL" 
     android:layout_marginTop="116dp" 
     android:background="#ffffff" 
     android:padding="10dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginBottom="12dp" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPassword" 
     android:ems="10" 
     android:hint="Contraseña" 
     android:id="@+id/etPassL" 
     android:layout_below="@+id/etEmailL" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:padding="10dp" 
     android:background="#ffffff" 
     android:layout_marginBottom="10dp" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Entrar" 
     android:id="@+id/btLoginL" 
     android:background="#ffffff" 
     android:layout_below="@+id/etPassL" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginTop="33dp" 
     android:textColor="#25ae90" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Aun no eres miembro? Registrate!" 
     android:id="@+id/tvRegistrarGo" 
     android:layout_below="@+id/btLoginL" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="35dp" 
     android:textStyle="bold" 
     android:textSize="15dp" 
     android:textColor="#ffffff" /> 


</RelativeLayout> 

Проблема заключается в том, когда я запустить приложение, кнопка не делает ничего, но если я изменить кнопку OnClick для

tvRegistrarGo.setText ("Prueba");

кнопка работает! Я работаю с: this sdk version and this build tools version

Это LogCat я получаю, когда я нажал одну сто раз кнопку, но если я один раз нажать редактирования текста с OnClick он появляется на LogCat:

01-26 23:21:51.309 6706-6706/? I/art: Late-enabling -Xcheck:jni 
01-26 23:21:51.476 6706-6742/com.example.neak.phore D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 
01-26 23:21:51.482 6706-6706/com.example.neak.phore D/Atlas: Validating map... 
01-26 23:21:51.528 6706-6742/com.example.neak.phore I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.030_msm8974_LA.BF.1.1.1_RB1__release_AU() 
                    OpenGL ES Shader Compiler Version: E031.25.03.06 
                    Build Date: 05/17/15 Sun 
                    Local Branch: mybranch10089422 
                    Remote Branch: quic/LA.BF.1.1.1_rb1.22 
                    Local Patches: NONE 
                    Reconstruct Branch: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.030 + 6151be1 + NOTHING 
01-26 23:21:51.529 6706-6742/com.example.neak.phore I/OpenGLRenderer: Initialized EGL, version 1.4 
01-26 23:21:51.555 6706-6742/com.example.neak.phore D/OpenGLRenderer: Enabling debug mode 0 
01-26 23:21:51.627 6706-6706/com.example.neak.phore I/Timeline: Timeline: Activity_idle id: [email protected] time:17054805 
01-26 23:22:48.574 6706-6706/com.example.neak.phore I/Timeline: Timeline: Activity_launch_request id:com.example.neak.phore time:17111752 
01-26 23:22:48.715 6706-6706/com.example.neak.phore I/Timeline: Timeline: Activity_idle id: [email protected] time:17111893 
01-26 23:22:52.005 6706-6706/com.example.neak.phore I/Timeline: Timeline: Activity_idle id: [email protected] time:17115184 
+3

Есть ли ошибки в вашей LogCat? – Buddy

+0

Какая ошибка вы получаете? Предоставьте логарифмические журналы. –

+0

Он ничего не отображается, когда я нажимаю кнопку, но если я изменяю Onclick для log.e («try», «try»); похоже, что это работает. Если я обмениваю его обратно, он не работает :(Logcat не получает никакого щелчка по кнопке –

ответ

0

Проблема заключается в том, что вы читаете значения своих EditText s до, и пользователь может их ввести.

Изменить это:

final String email = etEmail.getText().toString(); 
    final String pass = etPassL.getText().toString(); 

    btLoginL.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      EnviarDatos(email, pass); 
     } 

к этому

btLoginL.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      EnviarDatos(
       etEmail.getText().toString(), 
       etPassL.getText().toString()); 
     } 
+0

Это не сработало :( –

+1

@IsmaelGarcia. Этот ответ устраняет одну из проблем вашего кода. Теперь объясните, что вы имеете в виду, когда говорите, не работает. Отлаживайте свой код и смотрите, что происходит в вашей функции 'EnviarDatos'. – Sharj

+0

Я отредактировал сообщение, теперь вы можете увидеть logcat. Проблема в том, что он не выглядит как botton :(В любом случае, спасибо за ваше время!: D –