嗨,我是Android开发新手,这是我在stackoverFlow上的第一篇文章。我正在尝试制作一张照片,其中有一张照片说brad pitt一个编辑文本和一个按钮。目标是猜测图片中的人物。 我想要它,以便如果用户键入brad pitt并单击按钮,它将带到不同图片的第二页,如果不正确,它可以做一个“错误答案”。 我的问题是,如果得到正确的答案,它就不会进入第二页。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button submit = (Button) findViewById(R.id.button1);
EditText input = (EditText) findViewById(R.id.etAnswer);
final String userinput = input.toString();
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
{if (userinput.equals("tom")) {
Intent myintent = new Intent (MainActivity.this,MainActivity2.class) ;
startActivity (myintent);
;
}else{
Toast.makeText(getApplicationContext(), "Wrong Answer", Toast.LENGTH_SHORT ).show();
}
}
}});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:2)
而不是userinput.equals("tom")
做"tom".equals(input.getText().toString())
您根本不需要userinput
答案 1 :(得分:0)
嘿,您需要在editText
之前声明onCreate()
,String
不应该是final
。
public class MainActivity extends Activity {
EditText input;
String userinput;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button submit = (Button) findViewById(R.id.button1);
input = (EditText) findViewById(R.id.editText1);
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
userinput = input.getText().toString();
Toast.makeText(getApplicationContext(), userinput, Toast.LENGTH_SHORT ).show();
if (userinput.equals("tom")) {
Intent myintent = new Intent (MainActivity.this,MainActivity2.class) ;
startActivity (myintent);
Toast.makeText(getApplicationContext(), "Correct Answer", Toast.LENGTH_SHORT ).show();
}else{
Toast.makeText(getApplicationContext(), "Wrong Answer"+userinput, Toast.LENGTH_SHORT ).show();
}
}
});
}
}
嘿这里是我的Dropbox文件夹的链接。link
答案 2 :(得分:0)
获取EditText中包含的文本的正确方法是使用EditText.getText()
。尝试替换此行:
final String userinput = input.toString();
有类似的东西:
final String userinput = input.getText().toString();
此外,这应该在点击后完成。将此行放在onCreate中将始终将userinput设置为空字符串或EditText的默认值,因为onCreate仅在执行开始时运行。
答案 3 :(得分:0)
您只能在onCreate期间设置userinput
一次。
final String userinput = input.toString();
之后,它再也不会被填满。但是input.toString()
不会返回实际输入的文本。你需要input.getText().toString();
。
这意味着您的userinput
始终为空,因为您的EditText在活动开始时可能为空。
因此,当您按下按钮时,userinput
仍然为空,这意味着它不等于“tom”,从而调用您的else
。
如果要在实际按下按钮时检查输入是否相等,请在按下按钮时实际填充userinput
。像这样:
@Override
public void onClick(View v) {
userinput = input.getText().toString();
// TODO Auto-generated method stub
if (userinput.equals("tom")) {
Intent myintent = new Intent (MainActivity.this,MainActivity2.class) ;
startActivity (myintent);
}else{
Toast.makeText(getApplicationContext(), "Wrong Answer", Toast.LENGTH_SHORT ).show();
}
}