Android aapt工具无法正确生成R.Java

时间:2013-01-06 02:33:07

标签: java android eclipse aapt

我是Android开发的新手,我正在尝试使用Eclipse / DDMS从我的书中复制并粘贴此示例。问题是,aapt工具似乎没有正确生成R.java。 R.java在其ID类中没有myListView和myEditText。

main.xml中:

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

的strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="app_name">ToDoList</string>
  <string name="addItemHint">New To Do Item</string>
  <string name="addItemContentDescription">New To Do z</string>
</resources>

R.java:

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package com.example.todolist;

    public final class R {
        public static final class attr {
        }
        public static final class drawable {
            public static final int ic_launcher=0x7f020000;
        }
        public static final class id {
            public static final int menu_settings=0x7f070000;


        }
        public static final class layout {
            public static final int main=0x7f030000;
        }
        public static final class menu {
            public static final int main=0x7f060000;
        }
        public static final class string {
            public static final int app_name=0x7f040000;
            public static final int hello_world=0x7f040001;
            public static final int menu_settings=0x7f040002;
        }
        public static final class style {
            /** 
            Base application theme, dependent on API level. This theme is replaced
            by AppBaseTheme from res/values-vXX/styles.xml on newer devices.


                Theme customizations available in newer API levels can go in
                res/values-vXX/styles.xml, while customizations related to
                backward-compatibility can go here.


            Base application theme for API 11+. This theme completely replaces
            AppBaseTheme from res/values/styles.xml on API 11+ devices.

     API 11 theme customizations can go here. 

            Base application theme for API 14+. This theme completely replaces
            AppBaseTheme from BOTH res/values/styles.xml and
            res/values-v11/styles.xml on API 14+ devices.

     API 14 theme customizations can go here. 
             */
            public static final int AppBaseTheme=0x7f050000;
            /**  Application theme. 
     All customizations that are NOT specific to a particular API-level can go here. 
             */
            public static final int AppTheme=0x7f050001;
        }
    }

Main.java:

package com.example.todolist;

import java.util.ArrayList;

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

public class Main extends Activity {

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Inflate your View
    setContentView(R.layout.main);

    // Get references to UI widgets
    ListView myListView = (ListView)findViewById(R.id.myListView);
    final EditText myEditText = (EditText)findViewById(R.id.myEditText);

    // Create the Array List of to do items
    final ArrayList<String> todoItems = new ArrayList<String>();

    // Create the Array Adapter to bind the array to the List View
    final ArrayAdapter<String> aa;

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

    // Bind the Array Adapter to the List View
    myListView.setAdapter(aa);

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

  }

1 个答案:

答案 0 :(得分:0)

@dman ...使用我的以下代码&amp;运行完美的文件。添加了下面的图片,以显示成功执行:) enter image description here

  1. strings.xml你的文件似乎完全没问题。没问题
  2. MainActivity.java文件

    package com.example.test1;

    import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.view.KeyEvent; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView;

    公共类MainActivity扩展了Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // Get references to UI widgets
        ListView myListView = (ListView)findViewById(R.id.myListView);
        final EditText myEditText = (EditText)findViewById(R.id.myEditText);
    
        // Create the Array List of to do items
        final ArrayList<String> todoItems = new ArrayList<String>();
    
        // Create the Array Adapter to bind the array to the List View
        final ArrayAdapter<String> aa;
    
        aa = new ArrayAdapter<String>(this,
                                      android.R.layout.simple_list_item_1,
                                      todoItems);
    
        // Bind the Array Adapter to the List View
        myListView.setAdapter(aa);
    
        myEditText.setOnKeyListener(new View.OnKeyListener() {
          public boolean onKey(View v, int keyCode, KeyEvent event) { 
            if (event.getAction() == KeyEvent.ACTION_DOWN)
              if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) ||
                  (keyCode == KeyEvent.KEYCODE_ENTER)) {
                todoItems.add(0, myEditText.getText().toString());
                aa.notifyDataSetChanged();
                myEditText.setText("");
                return true;
              }
            return false;
          }
    
        });
    
      }
    

    }

  3. RES /布局/ activity_main.xml中      

  4. 确保路径下没有任何文件:res / menu / ... xml。默认情况下,系统在此文件夹中包含“main.xml”文件。如果存在,请删除那些我们不需要它的东西。