Android:如果Else Android,Else总是激活

时间:2013-05-13 14:08:59

标签: android xml android-intent android-edittext

嗨,我是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;
    }

}

4 个答案:

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