这个问题可能表明我完全缺乏Java知识。但是,让我首先向您展示我认为声明“成员字段”的正确方法:
public class NoteEdit extends Activity {
private Object mTitleText;
private Object mBodyText;
我正在关注一个针对android(here)的Google记事本教程,他们只是说:“请注意,mTitleText和mBodyText是成员字段(您需要在类定义的顶部声明它们)。”我以为自己明白了,然后意识到这小段代码是行不通的。
if (title != null) {
mTitleText.setText(title);
}
if (body != null) {
mBodyText.setText(body);
}
因此,要么我没有正确设置“成员字段”,我以为所需要做的就是在NoteEdit类的顶部将它们声明为私有对象,否则我会丢失其他东西。在此先感谢您的帮助。
更新
我被要求显示这些字段的初始化位置,这是另一个代码片段,希望对您有所帮助...
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.note_edit);
Long mRowId;
mTitleText = (EditText) findViewById(R.id.title);
mBodyText = (EditText) findViewById(R.id.body);
因此,基本上出现的错误来自eclipse:
“未为对象类型定义方法setText(String)”
最佳答案
声明字段和变量时,给它们一个比Object更具体的static type
通常是有帮助的。因为您已将mTitleText
声明为Object
,所以编译器仅知道如何在常规Object class definition上调用方法。 setText
不是这样的方法,因此在不进行强制转换或其他欺骗手段的情况下调用它是不合法的。
您应该做的就是弄清楚字段应该是哪种类型。我不知道Android,但是我想有一个文本标签类定义您的setText
方法。如果您将字段更改为那样定义,
private EditText mTitleText;
您会发现事情应该会更好:-)