getText 不可访问

getText is not accessible

editText 作为 view 传递给方法 checkMQTTResources,然后我对传递给此方法的每个视图的 ID 创建 switch-case checkMQTTResources.

如下所示,尝试访问每个视图的getText方法,但在使用自动完成功能时不允许或不显示。

为什么我不能使用'getText'?

代码:

    btnStubView_Connect.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            checkMQTTResources(etStubView_ip);
        }
    });
}
protected void checkMQTTResources(View view) {
    // TODO Auto-generated method stub
    switch(view.getId()) {

    case R.id.etSubView_ip:
        view.gettext //gettext is not allowed here, why?
        break;
    case R.id.etSubView_port:
        break;
    case R.id.etSubView_clientID:
        break;
    case R.id.etSubView_KATimer:
        break;
    }
}

您错过了 typecast viewEditText:

((EditText)view).getText();

两种方法解决你的问题。

  1. 首先将您的 View 转换为 EditText 然后调用 getText()

  2. 接收EditText本身

why i can not use 'getText'

因为该方法接受 View,而 EditTextView,您将能够访问更通用的 public 方法 class, View class, 没有这样的方法 getText().

要解决这个问题,您应该将视图转换(转换)为 EditText,例如:

((EditText)view).getText().toString();

或接受 EditText 作为参数而不是 View:

protected void checkMQTTResources(EditText editText) {
   //...
   editText.getText().toString();
}

View 是视图层次结构

中的顶级 class
java.lang.Object
   ↳    android.view.View
       ↳    android.widget.TextView
           ↳    android.widget.EditText

View 没有 getText() 方法,基本上它是在 android.widget.TextView 中定义的。调用 getText() 方法需要向下转换