0

I am new to Android development and I am trying to copy and paste this example from my book using Eclipse/DDMS and . The issue is, the aapt tool does not seem to be generating the R.java correctly. The R.java does not have a myListView and myEditText in it's ID class.

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;
      }
    });

  }
dman
  • 10,406
  • 18
  • 102
  • 201
  • Check the timestamp on R.java. You may be looking at a version that pre-dates the addition of the 2 items you mentioned. It may not have been rebuilt. If you have any other layout errors in your project, R.java is not re-generated. – EJK Jan 06 '13 at 02:37
  • Eclipse, ADT, and all the Android packages are up to date(just updated them last night). I cut and pasted this code into a new project. So, the R.java should be regenerated real time- right? I don't see any errors in the layout that I cut and pasted from the book. Not sure where to go from here. – dman Jan 06 '13 at 02:53
  • Make sure that the project has actually built. Do the following: From the "Project" menu, select "Clean...". That should trigger a full build. – EJK Jan 06 '13 at 02:57
  • Also, check the timestamps on the files. Is the timestamp on R.java later than the timestamp of your XML layout file? If so, then it was regenerated after your changes and your new elements should be referenced there. – EJK Jan 06 '13 at 02:58

1 Answers1

0

@dman...Use my below code & files which runs perfectly fine. added the image below to show the successful execution :) enter image description here

  1. strings.xml your file seems to be perfectly fine. No issues there
  2. MainActivity.java file

    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;

    public class MainActivity extends 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/layout/activity_main.xml

  4. Ensure you don't have any file under path: res/menu/...xml. By default system contains 'main.xml' file in this folder. If exists, delete that stuff as we don't need it.

Ramakishna Balla
  • 1,020
  • 1
  • 8
  • 12