当我想要启动ListActivity时,我正在工作几个小时我遇到的错误。 关于我想做什么的简短解决方法: 我有一个带有普通菜单的主应用程序,我想从中启动一个设置列表,用户可以在其中添加特定设置。
我正在尝试像这样启动ListView:
startActivity(new Intent(this, FileManagerSettings.class));
然后在创建方法中我得到了错误:
userSettings = deserializeObject();
if(userSettings.isEmpty())
{
userSettings.add(new SettingItem("Camera", android.os.Environment.DIRECTORY_DCIM, false));
}
super.onCreate(icicle);
Context mContext = this.getApplicationContext();
settingsList = (ListView)findViewById(R.id.list_settings);
settingsList.setAdapter(new CustomSettingsAdapter(mContext, userSettings));
最后一行导致错误。为了更好地理解适配器类的构造函数:
public CustomSettingsAdapter(Context context, ArrayList<SettingItem> sitems)
{
settingsArrayList = sitems;
mInflater = LayoutInflater.from(context);
}
这是logcat的错误:(抱歉,不知道如何正确格式化)
04-01 11:07:26.756:ERROR / AndroidRuntime(375):致命异常:主要 04-01 11:07:26.756:ERROR / AndroidRuntime(375):java.lang.RuntimeException:无法启动活动ComponentInfo {org.openintents.filemanager / org.openintents.filemanager.FileManagerSettings}:java.lang.NullPointerException 04-01 11:07:26.756:ERROR / AndroidRuntime(375):引起:java.lang.NullPointerException 04-01 11:07:26.756:ERROR / AndroidRuntime(375):at org.openintents.filemanager.FileManagerSettings.onCreate(FileManagerSettings.java:43)
在我的想法中,错误是由于上下文的LayoutInflater为空而引起的...但我不知道如何获取LayoutInflater然后甚至不知道这是否真的是错误...
编辑:使用setContentView()的错误日志:
04-01 12:06:56.315:ERROR / AndroidRuntime(669):致命异常:主要 04-01 12:06:56.315:ERROR / AndroidRuntime(669):java.lang.RuntimeException:无法启动活动ComponentInfo {org.openintents.filemanager / org.openintents.filemanager.FileManagerSettings}:java.lang.RuntimeException:Your content必须有一个ListView,其id属性为'android.R.id.list'
这是xml-File:
<LinearLayout android:layout_width="fill_parent"
android:id="@+id/list"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:id="@+id/settings_list_title"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/settings_header"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center" />
<ListView android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
答案 0 :(得分:1)
如果已设置Activty的布局,则findViewById()仅返回对View的有效引用。查看您粘贴到问题中的代码,似乎您没有打电话给
setContentView(R.layout.whatever_your_layout_file_id);
您的变量settingsList将是一个空引用