所以,我想要做的是,如果名称或联系人字段为空,则要打印消息,否则提交。 现在,问题是,对于第一次试验(两个字段都是空的),它给了我'输入名称'。然后,即使我再次输入名称,仍然是相同的。
你能帮帮我..
这是代码......
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button sub=(Button) findViewById(R.id.submit);
final EditText name=(EditText) findViewById(R.id.editText1);
final EditText phone=(EditText) findViewById(R.id.editText2);
final String cust_name=name.getText().toString();
final String phone_num=phone. getText(). toString();
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(cust_name.length()==0)
Toast.makeText(MainActivity.this, "Name must be provided!", Toast.LENGTH_SHORT).show();
else if(phone_num.length()==0)
Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();
else
{
Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
答案 0 :(得分:1)
您必须在按钮的getText()
中输入onclicklistener
代码行。
它无效,因为您从onCreate()的edittexts获取文本。 onCreate()
是一个回调,在活动开始时由系统调用。当它启动时,edittexts不包含任何值。但只有在edittexts中输入了一些值后,才能在单击按钮时获取值。因此,getText()
代码行应移动到onClick()
,当您单击按钮时,它始终会被调用。
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String cust_name=name.getText().toString();
String phone_num=phone. getText(). toString();
if(cust_name.length()==0)
Toast.makeText(MainActivity.this, "Name must be provided!", Toast.LENGTH_SHORT).show();
else if(phone_num.length()==0)
Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();
else
{
Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
答案 1 :(得分:0)
在下面的代码行中出现问题
oncreate(--) {
---
---
final String cust_name=name.getText().toString(); // here edittexts are empty hence string variables are empty too.
final String phone_num=phone. getText(). toString();
}
你在oncreate()方法中设置cust_name和phone_num,因此它们总是空的,无论你以后输入什么..你的代码必须是下面的代码
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button sub=(Button) findViewById(R.id.submit);
final EditText name=(EditText) findViewById(R.id.editText1);
final EditText phone=(EditText) findViewById(R.id.editText2);
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String cust_name=name.getText().toString();
String phone_num=phone. getText(). toString();
if(cust_name.length()==0)
Toast.makeText(MainActivity.this, "Name must be provided!", Toast.LENGTH_SHORT).show();
else if(phone_num.length()==0)
Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();
else
{
Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
答案 2 :(得分:0)
在按钮内单击name.getText().toString()
和phone. getText(). toString()
以获取其中的最新值:
String cust_name,phone_num;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// your code here
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
cust_name=name.getText().toString();
phone_num=phone. getText(). toString();
//..your code here
答案 3 :(得分:0)
尝试这种方式:
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final String cust_name=name.getText().toString();
final String phone_num=phone. getText(). toString();
if(cust_name.length()==0)
Toast.makeText(MainActivity.this, "Name must be provided!", Toast.LENGTH_SHORT).show();
else if(phone_num.length()==0)
Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();
else
{
Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
答案 4 :(得分:0)
使其成为嵌套类型条件,然后检查它是否可以正常工作
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(cust_name.equals(""))
{
if(phone_num.equals(""))
Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();}
Toast.makeText(MainActivity.this, "Name must be provided!", Toast.LENGTH_SHORT).show();}
else
{
Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
答案 5 :(得分:0)
您必须声明edittext变量public,以便您可以在此类中的任何位置使用。
String cust_name,phone_num;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//your code for intialize another variable
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(cust_name.getText().toString().length()==0){
//toast with error message
}else if(phone_num.getText().toString().length()==0){
//toast with error message
}else{
//you have to get fresh value
}
}
});
答案 6 :(得分:0)
根据您共享的代码判断,您的姓名和电话号码字符串将始终为空。因此,无论您添加到EditText框中,它们都不会在String中填充,从而一次又一次地抛出相同的错误。
以下情况应该有效。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button sub=(Button) findViewById(R.id.submit);
final EditText name=(EditText) findViewById(R.id.editText1);
final EditText phone=(EditText) findViewById(R.id.editText2);
//final String cust_name=name.getText().toString(); **REMOVE**
//final String phone_num=phone. getText(). toString(); **REMOVE**
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String cust_name=name.getText().toString();
String phone_num=phone. getText(). toString();
if(cust_name.length()==0)
Toast.makeText(MainActivity.this, "Name must be provided!", Toast.LENGTH_SHORT).show();
else if(phone_num.length()==0)
Toast.makeText(MainActivity.this, "You must provide your phone number!", Toast.LENGTH_SHORT).show();
else
{
Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
这一次,当您按下提交按钮时,我们将在 THAT 时刻获取EditText框中的文本。因此,如果您通过UI输入内容,它将不会为空。
答案 7 :(得分:0)
只需使用[TextViewName].getText().length()==0
代替[TextViewName].getText()==0
答案 8 :(得分:0)
它无效,因为您从onCreate()的edittexts获取文本。当活动开始时,系统会调用onCreate()。那时edittexts不包含任何值。但只有在edittexts中输入了一些值后,才能在单击按钮时获取值。
移动
name.getText()。的toString()
和
电话。 gettext的()。的toString()
在内部按钮单击以从中获取最新值。