Android Edittext:尝试在null对象引用上调用接口方法

时间:2016-03-10 06:20:16

标签: java android nullreferenceexception

当我运行下面的代码时,永远找不到edittext中的用户名。我已经使用和不使用用户名进行了测试,但是当单击该按钮时,它会向eventlistener发送一个null对象。我是android的新手,并且当用户名edittext包含用户名时,为什么它没有返回字符串。

var lblTag: UILabel!
var i=0
let arrTags : NSArray! // Add your tangs in this Array

 @IBAction func btnImageTapped(sender : UIButton)
 {
    if (sender.selected)
    {
         sender.selected=false
        // Display All tags

         for(i=0;i<arrTags.count;i++)
         {
            // set random x , y coordinate
            lblTag = UILabel(frame:  CGRectMake(CGFloat(i)+1.0,CGFloat(i)+6.0,25,25))
            lblTag.tag=i;
            lblTemp.text = arrTags.objectAtIndex(i) as? String
            self.view.addSubview(lblTag) 
         }
    }
    else
    {
        sender.selected=true
        // Hide All Tags

        let lblTemp : UILabel!
        for(i=0;i<arrTags.count;i++)
        {
           lblTemp = self.view.viewWithTag(i) as! UILabel 
           lblTemp.hidden = true
        }
    }
 }

}

无论如何,谢谢你的帮助和时间

2 个答案:

答案 0 :(得分:1)

eventListener为null,这就是你得到NullPointerException的原因。

由于原始接口仅提供派生类应该执行的操作的合约,因此您还必须在其后面创建逻辑:

private interface eventListener {
  void onEvent(String string);
}

eventListener listener = new eventListener() {
  @Override
  public void onEvent(String string) {
    Log.e(TAG, "onEvent " + string);
  }
};

我不确定你是否想要一个接口,因为一个简单的方法会这样做:

public void onLogin(String username) {
  Log.e(TAG, "onLogin " + username)
}

答案 1 :(得分:0)

我认为问题出在这一行

eventListener.someEvent(usernameString);

如果没有初始化接口eventListener,你可以这样做吗?

eventListener ev = new eventListener(){
void someEvent(usernameString);
}