【问题标题】:Button is not working correctly (android studio)按钮无法正常工作(android studio)
【发布时间】:2016-01-26 22:03:13
【问题描述】:

我是 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: android.os.BinderProxy@1dfc7494 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: android.os.BinderProxy@815ccf4 time:17111893
01-26 23:22:52.005 6706-6706/com.example.neak.phore I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@1dfc7494 time:17115184

【问题讨论】:

  • 你的 logcat 有错误吗?
  • 您遇到什么错误?请提供 logcat 日志。
  • 当我点击按钮时它什么也没有出现,但是如果我改变 onclick for log.e("try","try");看起来它有效。如果我把它换回去不起作用:( logcat 没有点击按钮
  • 你有两个按钮。哪个按钮有问题。
  • 一个是按钮,另一个是编辑文本,您可以单击它转到另一个活动。

标签: android android-studio android-button


【解决方案1】:

问题是您正在读取EditTexts 的值用户有机会输入它们之前。

改变这个:

    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() );
        }

【讨论】:

  • @IsmaelGarcia 上面的答案修复了代码中的一个问题。现在解释当你说不起作用时你的意思。调试您的代码并查看您的 EnviarDatos 函数中发生了什么。
  • 我编辑了帖子,现在你可以看到 logcat。问题是它似乎不是一个 botton :( 无论如何感谢您的时间!:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多