我正在开发非常简单的注册应用程序。我也试图验证密码(即长度小于8)..但在运行应用程序后,“我很遗憾,你的应用已经停止工作”。请帮帮我。我使用seterror方法来显示错误
java文件: 包com.example.dell.practice;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onbuttonclick(View v)
{
EditText et=(EditText) findViewById(R.id.atpassword);
if(et.getText().toString().trim().length()<8)
et.setError("invalid password");
else if(v.getId()==R.id.bsignup)
{
Intent i=new Intent(MainActivity.this,aftersignup.class);
startActivity(i);
}
}
}
和xml代码是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="344dp"
android:layout_height="495dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp">
<TextView
android:id="@+id/tvusername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Username"
android:textSize="16sp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp" />
<EditText
android:id="@+id/etname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"/>
<TextView
android:id="@+id/tvpassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="password"
android:textSize="16sp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp" />
<EditText
android:id="@+id/etpassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
<Button
android:id="@+id/blogin"
android:layout_width="75dp"
android:layout_height="65dp"
android:layout_gravity="center"
android:textStyle="bold"
android:text="LOGIN" />
<Button
android:id="@+id/bsignup"
android:layout_width="100dp"
android:layout_height="65dp"
android:layout_gravity="center"
android:onClick="onbuttonclick"
android:textStyle="bold"
android:text="SIGN UP" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:1)
当你在xml中使用etpassword时,你需要在java文件中引用相同的名称。
更改以下行
EditText et=(EditText) findViewById(R.id.atpassword);
到
EditText et=(EditText) findViewById(R.id.etpassword);
这应该可以解决您的应用崩溃错误。
答案 1 :(得分:0)
只需删除if else条件并将其替换为else条件
if(et.getText().toString().trim().length()<8){
et.setError("invalid password");
}
else
{
Intent i=new Intent(MainActivity.this,aftersignup.class);
startActivity(i);
}
还在onCreate中初始化您的edittext并为其创建一个类级别变量
虽然您可能需要研究如何将有效代码编写为初学者:)
答案 2 :(得分:0)
import android.content.Intent;
import android.support.v7.app.AppCompatActivity
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements View.OnClickListener;{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et=(EditText) findViewById(R.id.etpassword);
Button btn=(Button)findViewById(R.id.blogin);
Button btn_signup=(Button)findViewById(R.id.bsignup)
btn_signup.setOnClickListener(this);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.blogin:
if(et.getText().toString().trim().length()<8){
et.setError("invalid password");
}else{
//do Login procedure
}
break;
case R.id.bsignup:
Intent i=new Intent(MainActivity.this,aftersignup.class);
startActivity(i);
break;
}
}
}
答案 3 :(得分:0)
这样做
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(et.getText().toString().trim().length()<8){
et.setError("invalid password");
}else{}
}
});