Java – findviewbyid() returns that the symbol cannot be found, but is the ID defined in the layout?
I'm learning some Android application development myself. I'm focusing on a video tutorial on how to create a simple todo list application However, I encountered a compilation error. From my limited knowledge, everything seemed to be in order The following are the main classes and layouts:
Main. java: http://pastebin.com/vfuANx0p
package com.example.exampletodo;
import android.R;
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.Button;
import android.widget.ListView;
import java.util.ArrayList;
import android.widget.ArrayAdapter;
public class Main extends Activity implements OnClickListener,OnKeyListener {
EditText txtItem;
Button btnAdd;
ListView listItems;
ArrayList<String> toDoItems;
ArrayAdapter<String> aa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtItem = (EditText)findViewById(R.id.txtItem);
btnAdd = (Button)findViewById(R.id.btnAdd);
listItems = (ListView)findViewById(R.id.listItems);
btnAdd.setOnClickListener(this);
txtItem.setOnKeyListener(this);
toDoItems = new ArrayList<String>();
aa = new ArrayAdapter<String>(this,R.layout.simple_list_item_1,toDoItems);
listItems.setAdapter(aa);
}
private void addItem(String item){
if(item.length() > 0){
this.toDoItems.add(item);
this.aa.notifyDataSetChanged();
this.txtItem.setText("");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
public void onClick(View v){
if(v == this.btnAdd){
this.addItem(this.txtItem.getText().toString());
}
}
public boolean onKey(View v,int keyCode,KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
this.addItem(this.txtItem.getText().toString());
}
return false;
}
}
main. In XML: http://pastebin.com/WcWg692v
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".Main">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/txtItem" android:layout_alignParentTop="true"
android:layout_alignParentRight="true" android:layout_alignParentLeft="true" android:focusable="true"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add"
android:id="@+id/btnAdd" android:layout_below="@+id/txtItem" android:layout_alignRight="@+id/txtItem"
android:layout_alignLeft="@+id/txtItem"/>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listItems"
android:layout_alignParentRight="true" android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true" android:layout_below="@+id/btnAdd"/>
</RelativeLayout>
The error is:
/home/rohan/ExampleToDo/ExampleToDo/src/main/java/com/example/exampletodo/Main.java Gradle: cannot find symbol variable main Gradle: cannot find symbol variable txtItem Gradle: cannot find symbol variable btnAdd Gradle: cannot find symbol variable listItems Gradle: cannot find symbol variable main
Thank you very much for your help!
Solution
You import the wrong r file, you import Android R. You should import your package R
com.example.exampletodo.R
Editor: don't forget that cleaning and construction are sometimes necessary Therefore, it is better than relying on automatic r creation And you can check whether your r file contains your ID at any time
Part 2:
Change that
ArrayAdapter<String>(this,toDoItems);
become
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,toDoItems);
Because simple_ list_ item_ 1 is Android Part of R, not your R
I hope this will help and enjoy your work
