这个问题可能表明我完全缺乏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;


您会发现事情应该会更好:-)

08-18 18:36
查看更多