如何在Java中声明"成员字段"?

Bub*_*Bub 1 java android

这个问题可能揭示了我在Java中完全缺乏知识.但是,让我首先向您展示我认为是宣布"成员字段"的正确方法:

public class NoteEdit extends Activity {

private Object mTitleText;
private Object mBodyText;
Run Code Online (Sandbox Code Playgroud)

我正在关注Android的谷歌笔记本教程(这里),他们只是说:"请注意,mTitleText和mBodyText是成员字段(你需要在类定义的顶部声明它们)." 我以为我得到了它,然后意识到这一小段代码不起作用.

if (title != null) {
            mTitleText.setText(title);
        }
        if (body != null) {
            mBodyText.setText(body);
        }
Run Code Online (Sandbox Code Playgroud)

所以要么我没有正确设置"成员字段",我认为所需要的只是将它们声明为NoteEdit类顶部的私有对象,否则我会遗漏其他内容.在此先感谢您的帮助.

UPDATE

我被要求显示这些字段在哪里被初始化是另一个代码片段希望它有用...

@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);
Run Code Online (Sandbox Code Playgroud)

所以基本上出现的错误来自eclipse:"方法setText(String)未定义类型Object"

Ste*_*ker 7

声明字段和变量时,给它们static type比Object 更具体是很有帮助的.因为您已声明mTitleTextObject,所以编译器只知道如何在常规Object类定义上调用方法. setText这不是一种方法,所以没有演员或其他诡计就不合法.

你应该做的是弄清楚你的领域应该是什么类型.我不知道Android,但我认为有一个文本标签类来定义你的setText方法.如果您将字段更改为定义为,

private EditText mTitleText;
Run Code Online (Sandbox Code Playgroud)

你会发现事情应该会好得多:-)

  • 我的目的是展示解决问题的最小变化.我个人不会使用这样的符号,但我不是在这里传播:) (2认同)