Android:错误:解析 XML 时出错:格式不正确(令牌无效)


我的

activity_main.xml在第 13 行有一个错误(你可以在下面看到)。它说"解析 XML 时出错:格式不正确(令牌无效)"。除此之外,我的R.java已经自杀了。我已经找到了修复它的方法,但在修复此错误之前它们不起作用(至少我认为是因为这个)。感谢您的任何帮助。顺便说一下,我正在按照教程进行操作 Javacodegeeks.com

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:mynamespace="http://schemas.android.com/apk/res/com.Learning.learning"
            xmlns:tools="http://schemas.android.com/tools"
            mynamespace:layout_width="success"
            mynamespace:orientation="vertical"
            mynamespace:layout_height="success">
            <ListView   android:id="@+id/listView"
                        android:layout_height="match_parent"
                        android:layout_width="match_parent"/>
                    List<Map<String>> planetsList = new ArrayList<Map<String,String>>() />
                        private void initList() {
                            //we populate them Planets
                            planetsList.add(createPlanet("planet", "Mercury"));
                            planetsList.add(createPlanet("planet", "Venus"));
                            planetsList.add(createPlanet("planet", "Earth"));
                            planetsList.add(createPlanet("planet", "Mars"));
                            planetsList.add(createPlanet("planet", "Jupiter"));
                            planetsList.add(createPlanet("planet", "Saturn"));
                            planetsList.add(createPlanet("planet", "Uranus"));
                            planetsList.add(createPlanet("planet", "Neptune"));
                        }
                        private HashMap<String, String> createPlanet(String key, String name) {
                            HashMap<String, String> planet = new HashMap<String, String>();
                            planet.put(key, name);
                            return planet;
                        }
                        // This is a simple adapter that accepts as parameter
                        // Context
                        // Data List
                        // The row layout that is used during the row creation
                        // The keys used to retrieve the data
                        // The View id used to show the data. The number and the view must match
                        simpleAdpt = new SimpleAdapter(this, planetsList, android.R.layout.simple_list_item_1, new String []
                        {"planet"}, new int[] {android.R.id.text1});
                    </ListView>

您是否也在activity_main.xml中混合了 Java 代码?因为activity_main.xml应仅包含以下代码:

<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" >
<ListView android:id="@+id/listView" 
          android:layout_height="match_parent"
          android:layout_width="match_parent"/>
</RelativeLayout>

MainActivity.java 应包含以下代码:

List<Map<String, String>> planetsList = new ArrayList<Map<String,String>>();
private void initList() {
planetsList.add(createPlanet("planet", "Mercury"));
planetsList.add(createPlanet("planet", "Venus"));
planetsList.add(createPlanet("planet", "Mars"));
planetsList.add(createPlanet("planet", "Jupiter"));
planetsList.add(createPlanet("planet", "Saturn"));
planetsList.add(createPlanet("planet", "Uranus"));
planetsList.add(createPlanet("planet", "Neptune"));
}
private HashMap<String, String> createPlanet(String key, String name) {
HashMap<String, String> planet = new HashMap<String, String>();
planet.put(key, name);
return planet;
}

我刚刚从您提供的链接中复制了此处的代码。

从 xml 中删除 JavaCode 并将其放在单独的 Java 文件中 您不能将 Java 代码放入 XML 文件中。

你把Java代码放在XML文件中吗?Java 代码位于类文件中。

根据该教程,他们希望您创建一个名为 activity_main.xml 的 xml 文件与内容

<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" >
    <ListView android:id="@+id/listView" 
              android:layout_height="match_parent"
              android:layout_width="match_parent"/>
</RelativeLayout>

另外,一个名为 MainActivity.java 的 Java 类

与内容

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // ....
    }
//...
}

来自您发布的链接源

删除 XML 标记中的 Javacode

我认为将其更改为

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:mynamespace="http://schemas.android.com/apk/res/com.Learning.learning"
            xmlns:tools="http://schemas.android.com/tools"
            mynamespace:layout_width="success"
            mynamespace:orientation="vertical"
            mynamespace:layout_height="success">
            <ListView   android:id="@+id/listView"
                        android:layout_height="match_parent"
                        android:layout_width="match_parent" /> 
</RelativeLayout>                                           ^Listview tag closed here

删除</ListView>标记。因为您已经在第 12 行关闭

您已在 XML 文件中包含 java 代码。请记住,Android 仅将 XML 文件用于布局和资源定义。数据填充、操作和其他处理的代码必须在 java 源文件中完成。例如,您可以在 MainActivity.java 文件中填充列表。

不能在 XML 文件中编写程序代码。这就是您出现错误的原因。阅读有关 XML 布局的更多信息

最新更新