我正在尝试制作一个比较字符串的程序
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
InputMethodManager imm=(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
if(inpt==null)op.setText("Please Enter");
else if (inpt.equals("a")) op.setText("a entered");
else if (inpt.equals("b")) op.setText("b entered");
else op.setText("unknown keyword");
但是else语句总是被执行。请帮我纠正这段代码
我是初学者,但还不太了解.......
答案 0 :(得分:0)
因为这个inpt字符串被声明为 final 。意味着值无法更改,并且 string inpt必须在每次执行 onClick 操作时更新。否则它将采用相同的值并获得其他部分。所以我删除了final关键字并在onClick函数中声明了字符串。试试这个。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText ip=(EditText)findViewById(R.id.ip);
final TextView op=(TextView)findViewById(R.id.op);
//final String inpt=ip.getText().toString();
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String inpt=ip.getText().toString();
InputMethodManager imm=(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
if(inpt==null)op.setText("Please Enter");
else if (inpt.equals("a")) op.setText("a entered");
else if (inpt.equals("b")) op.setText("b entered");
else op.setText("Unknown keyword");
}
});
}