-3

我的 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>

4

6 回答 6

2

您是否也在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;
}

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

于 2013-11-01T08:32:39.847 回答
0

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

于 2013-11-01T08:25:26.147 回答
0

您是否将 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

有内容

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       // ....
    }
//...
}
于 2013-11-01T08:27:36.710 回答
0

从您发布的链接

删除 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 行关门了

于 2013-11-01T08:27:41.527 回答
0

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

于 2013-11-01T08:28:08.890 回答
0

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

于 2013-11-01T08:28:14.513 回答