我不确定为什么我在下面的激活码中获取null。关于它如何工作的任何指针/解释都会非常有用。感谢
protected void onCreate(Bundle savedInstanceState) {
.
.
.
Bundle bundle = getIntent().getExtras();
final String activationcode = bundle.getString("activationcode");
etActivationCode = (EditText)findViewById(R.id.et_LoginForgotPasswordOk_Code);
btnForgotPasswordOk = (Button)findViewById(R.id.btn_LoginForgotPasswordOk_OK);
btnForgotPasswordOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String inputActivationCode = etActivationCode.getText().toString();
if( inputActivationCode == activationcode){
//the value of activationcode above is null. Hence doesn't match ever
}
}
});
但是,如果我执行以下操作,则可以引用激活码的值
@Override
public void onClick(View arg0) {
new CheckMatch().execute(activationcode);
//the value of activationcode can now be accessed in the AsyncTask class CheckMatch
}
答案 0 :(得分:1)
理想情况下,您应该使用equalsIgnoreCase()
来比较两个字符串。如果它仍然不起作用,请尝试将您的activationCode变量转换为全局变量(通过在类中的onCreate之外声明它)。你可以在onCreate中为这个变量赋值(就像你现在的做法一样)。
答案 1 :(得分:1)
==
比较实例(指针,如果你熟悉C),而不是值。您应该使用inputActivationCode.equals(activationcode)
。