[edit] logcat here https://app.box.com/s/08yuzv8hq4bgt7qpemy0
这是我正在做的这个非常简单的培训应用程序,应用程序在启动时不断崩溃:
package com.example.myown;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, R.array.arraye);
setListAdapter(adapter);
ListView lv = getListView();
}
@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;
}
}
你能看出出现这种情况的原因吗?一打开应用程序就崩溃了 - 活动显示没有列表视图然后我得到通常的“MyOwn已停止”。
这是activity_mail.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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
这是strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MyOwn</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name="arraye">
<item>one</item>
<item>two</item>
<item>three</item>
<item>four</item>
</string-array>
</resources>
答案 0 :(得分:2)
注意:
使用ListActivity创建Listview时,两件事必须包含一个ListView,其android:id属性设置为@android:id / list(NOT android:id =“@ + id / list”)。
如果您将定义ListView并将android:id属性设置为@ + id / list,则会出错。
<ListView android:id="@android:id/list"
android:layout_height="wrap_content"
android:layout_width="match_parent">
</ListView>
答案 1 :(得分:0)
看起来您正在尝试将数组资源加载到ArrayAdapter中。正在调用的构造函数期望textview的资源ID将字符串放入。
相反,您应该从资源中加载数组并将其放入适配器中,如下所示:
String[] items = getResources().getStringArray(R.array.arraye);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, items);
答案 2 :(得分:0)
此处的问题是因为您使用ListActivity
而ListView
但您使用的是自定义布局,因此Activity
会读取布局并尝试查找其ListView
但是你没有将它包含在布局中,所以你需要像这样添加ListView
:
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
这里是Activity
代码:
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String [] array = getApplicationContext().getResources().getStringArray(R.array.arraye);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(List_Activity.this, android.R.layout.simple_list_item_1, array);
setListAdapter(adapter);
ListView lv = getListView();
}
我把数组字符串放在资源中:
<string-array name="arraye">
<item>item1</item>
<item>item1</item>
<item>item1</item>
</string-array>
喂我回来