R.id.myEditText错误// todolist尝试

时间:2011-04-04 11:01:15

标签: android r.java-file

嘿伙计们, 我从WROX(Android 2应用程序开发)购买了一本Android开发书,在第2章他们有一个平均任务列表项目,我似乎无法工作。

我复制了确切的代码行并尝试调整它们以使其工作,但无论我做什么,以下行仍然是错误。

final EditText myEditText = (EditText) findViewById(R.id.myEditText);

错误是R.id.myEditText,我已将其添加到R.java文件中,但没有运气它不想工作。

它的java文件如下。


package com.paad.todolist;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView; 

public class ToDoList extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    ListView myListView = (ListView) findViewById(R.id.myListView);
    final EditText myEditText = (EditText) findViewById(R.id.myEditText);

    final ArrayList<String> todoItems = new ArrayList<String>();

    final ArrayAdapter<String> aa;
    aa = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, todoItems);

    myListView.setAdapter(aa);

    myEditText.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keycode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN)
                if (keycode == KeyEvent.KEYCODE_DPAD_CENTER) {
                    todoItems.add(0, myEditText.getText().toString());
                    aa.notifyDataSetChanged();
                    myEditText.setText("");
                    return true;
                }
            return false;
        }
    });
}

}

XML文件是以下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:id="@+id/myTextView"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<ListView
    android:id="@+id/myListView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    />
</LinearLayout>

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您不直接更新R.java文件,这是在构建项目时自动生成的。问题是您尚未将EditText添加到布局中:

<EditText
    android:id="@+id/myEditText"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />

答案 1 :(得分:1)

如果你改变了

android:id="@+id/myTextView"

android:id="@+id/myEditText"

它应该有用。

引擎盖下发生了什么?当您在XML文件中定义具有特定ID的元素时,Android工具(可能在您的情况下为Eclipse)将重新生成R.java文件。

永远不应该手动编辑

R.java,将其视为源代码文件,以类型安全的方式表示您的XML元素,您可以使用Java代码访问它。

答案 2 :(得分:1)

按如下所示更改您的xml文件,然后尝试:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <EditText     android:id="@+id/myEditText"     android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:text="@string/hello"     /> <ListView     android:id="@+id/myListView"     android:layout_width="fill_parent"     android:layout_height="wrap_content"      /> </LinearLayout>