1

こんにちは、私は WROX (Android 2 アプリケーション開発) から android dev book を購入しましたが、第 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>

何か案は?

4

3 に答える 3

4

R.java ファイルを直接更新しないでください。これは、プロジェクトのビルド時に自動的に生成されます。問題は、EditText をレイアウトに追加していないことです。

<EditText
    android:id="@+id/myEditText"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
于 2011-04-04T11:05:41.693 に答える
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>
于 2011-04-04T11:07:26.263 に答える
1

変えたら

android:id="@+id/myTextView"

android:id="@+id/myEditText"

それはうまくいくはずです。

ボンネットの下で何が起こっているのですか?XML ファイルで特定の ID を持つ要素を定義すると、Android ツール (おそらくあなたの場合は Eclipse) がR.javaファイルを再生成します。

R.javaJava コードでアクセスできる型安全な方法で XML 要素を表すソース ファイルと考えてください。

于 2011-04-04T11:06:52.640 に答える