Android 为什么我的按钮没有点击?
我尝试过寻找其他答案,但我的努力都是徒劳的,我似乎做的每件事都是对的,甚至看过一些关于如何去做的教程。出于某种原因,当我运行模拟器时,我的按钮根本不起作用。没有回应。我起初认为可能是密码错误,但随后错误信息也没有显示出来。我做错了什么Android 为什么我的按钮没有点击?,android,Android,我尝试过寻找其他答案,但我的努力都是徒劳的,我似乎做的每件事都是对的,甚至看过一些关于如何去做的教程。出于某种原因,当我运行模拟器时,我的按钮根本不起作用。没有回应。我起初认为可能是密码错误,但随后错误信息也没有显示出来。我做错了什么 import android.content.Intent; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import an
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final EditText inEmail = (EditText) findViewById(R.id.inEmail);
final EditText inPassword = (EditText) findViewById(R.id.inPassword);
Button bLogin = (Button) findViewById(R.id.bLogin);
final TextView tCaption = (TextView) findViewById(R.id.tCaption);
TextView tHyperLink = (TextView) findViewById(R.id.tHyperlink);
Log.d("SOS", "onCreate: Here");
tHyperLink.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent registerIntent = new Intent(LoginActivity.this,Register.class);
startActivity(registerIntent);
}
});
bLogin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Log.d("SOS", "Reached");
if(inEmail.getText().toString().equals("m") && inPassword.getText().toString().trim().equals("o")){
Intent Main = new Intent(LoginActivity.this, MainActivity.class);
startActivity(Main);
} else {
AlertDialog.Builder msg = new AlertDialog.Builder(LoginActivity.this);
msg.setMessage("Login Failed").setNegativeButton("Retry", null).create().show();
}
}
});
}
}
下面是相应的xml文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
tools:context="com.bludevs.twotor.LoginActivity">
<EditText
android:id="@+id/inEmail"
android:layout_width="330dp"
android:layout_height="41dp"
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="26dp"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<EditText
android:id="@+id/inPassword"
android:layout_width="330dp"
android:layout_height="41dp"
android:ems="10"
android:inputType="textPassword"
android:hint="Password"
android:layout_marginTop="18dp"
app:layout_constraintTop_toBottomOf="@+id/inEmail"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent" />
<ImageView
android:id="@+id/imageView"
android:layout_width="330dp"
android:layout_height="101dp"
app:srcCompat="@mipmap/twotor_logo"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent" />
<Button
android:id="@+id/bLogin"
android:layout_width="195dp"
android:layout_height="55dp"
android:text="Login"
android:background="@android:color/background_dark"
android:textColor="@color/colorAccent"
android:layout_marginTop="49dp"
app:layout_constraintTop_toBottomOf="@+id/inPassword"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"
android:clickable="true"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintVertical_bias="0.0" />
<TextView
android:id="@+id/tCaption"
android:layout_width="120dp"
android:layout_height="22dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:text="Not a member yet?"
android:textColor="@android:color/background_light"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bLogin"
app:layout_constraintVertical_bias="0.781"
app:layout_constraintHorizontal_bias="0.231" />
<TextView
android:id="@+id/tHyperlink"
android:layout_width="120dp"
android:layout_height="22dp"
android:layout_marginLeft="8dp"
android:textColor="@color/colorAccent"
android:text= "@string/Register"
android:clickable="true"
app:layout_constraintLeft_toRightOf="@+id/tCaption"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/bLogin"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintVertical_bias="0.778" />
</android.support.constraint.ConstraintLayout>
将按钮单击代码替换为:
if (inEmail.getText().toString().trim().equals("m") && inPassword.getText().toString().trim()`enter code here`.equals("o")) {
Intent Main = new Intent(LoginActivity.this, MainActivity.class);
startActivity(Main);
} else {
AlertDialog.Builder msg = new AlertDialog.Builder(LoginActivity.this);
msg.setMessage("Login Failed").setNegativeButton("Retry", null).create().show();
}
必须使用toString()方法将EditText值转换为字符串。
而且,如果您没有在manifest类中注册应用程序,您还可以使用trim()方法删除额外的空间。。 那就去你的舱单课吧。并相应地添加这些行
<activity
android:name="YourActivityName"
/>
同时将inEmail.getText()
更改为inEmail.getText().toString()
我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bludevs.twotor">
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".LoginActivity" />
<activity android:name=".Register">
</activity>
</application>
</manifest>
共享您的xml文件Yashy您的代码似乎没有bug,您是否在清单类中注册了您的活动?不,我没有。我该怎么做呢。还有,为什么会导致按钮不点击?我在这里发布。粘贴你活动的完整代码。我刚刚调试了你的应用程序,找到了相同的答案。我认为这应该是可以接受的答案。您没有将edittext中的值转换为字符串变量,这就是您无法将值与“m”进行比较的原因。但这似乎仍然不起作用,我确实尝试过。这也意味着它应该进入'else'块,而不是。我的活动似乎已注册。我们是否使用“Intent Main”?它应该是一个关键词。请使用意向i_Main。答案已随更改而更新。
-UI related event handlers are better inside OnCreate.
-If you need otherwise, you should take views and context into
consideration rather than using a void function
-Following should help.
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final EditText inEmail = (EditText) findViewById(R.id.inEmail);
final EditText inPassword = (EditText) findViewById(R.id.inPassword);
Button bLogin = (Button) findViewById(R.id.bLogin);
final TextView tCaption = (TextView) findViewById(R.id.tCaption);
TextView tHyperLink = (TextView) findViewById(R.id.tHyperlink);
tHyperLink.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent registerIntent = new Intent(LoginActivity.this,Register.class);
startActivity(registerIntent);
}
});
bLogin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(inEmail.getText().equals("m") && inPassword.getText().equals("o")){
Intent i_Main = new Intent(LoginActivity.this, MainActivity.class);
startActivity(i_Main);
} else {
AlertDialog.Builder msg = new AlertDialog.Builder(LoginActivity.this);
msg.setMessage("Login Failed").setNegativeButton("Retry", null).create().show();
}
}
});
}