当在onClickListener中引用时,getExtra()给出一个空值

时间:2015-02-10 20:33:45

标签: android android-intent bundle

我不确定为什么我在下面的激活码中获取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
        }

2 个答案:

答案 0 :(得分:1)

理想情况下,您应该使用equalsIgnoreCase()来比较两个字符串。如果它仍然不起作用,请尝试将您的activationCode变量转换为全局变量(通过在类中的onCreate之外声明它)。你可以在onCreate中为这个变量赋值(就像你现在的做法一样)。

答案 1 :(得分:1)

==比较实例(指针,如果你熟悉C),而不是值。您应该使用inputActivationCode.equals(activationcode)