解析XML时出错:找不到元素。并且因为它不会生成R.java

时间:2010-11-20 21:58:08

标签: android xml

我收到解析错误,我不知道为什么(我是编程新手)。由于这个错误,R.java消失了,我最终得到了更多的错误。希望有人可以帮助我。这是错误的来源:list.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
  <ListView android:id="@+id/ListView01" android:layout_height="wrap_content"
  android:layout_width="fill_parent">
  <TextView android:text="@+id/TextView01" android:id="@+id/TextView01"
  android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:layout_marginLeft="10px" android:textColor="#0099CC"></TextView>

 </ListView>

</LinearLayout>

这里是调用xml文件的地方:list.java

package com.aha;

import java.util.HashMap;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SimpleAdapter;
import android.widget.SimpleAdapter.ViewBinder; 
import android.widget.Adapter; 
import android.widget.BaseAdapter; 

public class list extends ListActivity {

  private HashMap<String, Class<?>> yourMap;
  @Override
  public void onCreate(Bundle b) {
   yourMap = new HashMap<String, Class<?>>();
   yourMap.put("Matches", matches.class);
   yourMap.put("Economy", finances.class);
  }

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

    String[] menu = getResources().getStringArray(R.array.menu_array);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list, menu));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);
    lv.setOnItemClickListener(new OnItemClickListener() {
      public <View> void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
        // When clicked, show a toast with the TextView text
             Object o = this.getListAdapter().getItem(position);
             String keyword = o.toString();
             Intent intent = new Intent(this, yourMap.get(keyword));
             startActivity(intent);

      }
    });
  }
 }

同样在这一行我得到一个错误,说我必须实现一个抽象方法:

    lv.setOnItemClickListener(new OnItemClickListener() {

我只是想知道这意味着什么,不一定是解决方案。希望我可以自己解决这个问题。我有一两天的解析错误,无法单独解决。

感谢您的帮助

5 个答案:

答案 0 :(得分:1)

ListView应该没有子元素,而是使用适配器。

答案 1 :(得分:0)

您正在使用的编辑器是什么?

根据我的经验解析eclipse中的问题是由下一个

引起的
  1. 您的视图名称是驼峰 *不要使用A使用NO CAPSLOCK *
  2. R文件未“刷新”,因此不会出现新元素
  3. 尝试

    1. 用小写字母写 * .xml(在视图文件夹中)。
    2. 清理所有项目,然后构建
    3. 也许你没有正确地宣布项目notice for this table for the SDK version
    4. 请告知我实际的错误(写在控制台中)以获得更多帮助。

答案 2 :(得分:0)

我遇到了类似的问题,原因是Eclipse添加了“import android.R;” (如果你倾向于使用Ctrl-Shift-O来导入文件),我的.java文件隐藏了R.java中的声明。 删除此导入行后,再次按预期看到R.java。

答案 3 :(得分:0)

采取以下步骤:

  1. 保存并关闭.xml
  2. 删除.out.xml和/或.out.out.xml
  3. 单击菜单中的Project并选择Clean ...
  4. 选择“清除以下所选项目”
  5. 的单选按钮
  6. 单击项目的复选框,然后单击“确定”
  7. 运行您的程序。

答案 4 :(得分:0)

您的问题似乎出现在布局文件中,

您已在布局文件中的TextView标记内添加了ListView。只需在ListView外部移动TextView。

你的布局文件应该是这样的,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
  <ListView android:id="@+id/ListView01" android:layout_height="wrap_content"
  android:layout_width="fill_parent">
  </ListView>

  <TextView android:text="@+id/TextView01" android:id="@+id/TextView01"
  android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:layout_marginLeft="10px" android:textColor="#0099CC"></TextView>

</LinearLayout>