R.id.myEditText error // попытка todolist

1

Эй, ребята, Я купил книгу разработчика Android от WROX (разработка приложений Android 2), а в главе 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>

Любые идеи?

  • 1
    Класс R создается автоматически. Вы не должны ничего добавлять к нему. Попробуйте удалить его и пересобрать проект (чистый), возможно, t поможет вам.
Теги:
r.java-file

3 ответа

4

Вы не обновляете свой файл R.java напрямую, это генерируется автоматически при создании вашего проекта. Проблема в том, что вы не добавили EditText в свой макет:

<EditText
    android:id="@+id/myEditText"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
  • 0
    Я добавил это в XML-файл, и ошибка остается той же, есть идеи?
  • 0
    @ Chaoticandroid Вы выполнили чистку и сборку?
1

Если вы измените

android:id="@+id/myTextView"

to

android:id="@+id/myEditText"

он должен работать.

Что происходит под капотом? Когда вы определяете элемент с определенным идентификатором в файле XML, инструменты Android (вероятно, в вашем случае Eclipse) будут восстанавливать файл R.java.

R.java никогда не должен редактироваться вручную, считайте его исходным файлом, который представляет ваши XML-элементы безопасным типом, к которому вы можете получить доступ в Java-коде.

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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню