Java 接收来自缺少ListView(尽管有xml)的RuntimeException
你好,我在我的Android项目中,我得到以下错误。我已经检查了几乎所有类似的问题,我试图在这里使用一些解决方案 但它们似乎不适用Java 接收来自缺少ListView(尽管有xml)的RuntimeException,java,android,xml,runtime,Java,Android,Xml,Runtime,你好,我在我的Android项目中,我得到以下错误。我已经检查了几乎所有类似的问题,我试图在这里使用一些解决方案 但它们似乎不适用 FATAL EXCEPTION: main Process: com.spicycurryman.getdisciplined10.app, PID: 1309 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spicycurryman.getdisciplined10.
FATAL EXCEPTION: main
Process: com.spicycurryman.getdisciplined10.app, PID: 1309
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spicycurryman.getdisciplined10.app/com.spicycurryman.getdisciplined10.app.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
at android.app.ListActivity.onContentChanged(ListActivity.java:243)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:293)
at android.app.Activity.setContentView(Activity.java:1929)
at com.spicycurryman.getdisciplined10.app.MainActivity.onCreate(MainActivity.java:32)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5017)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
显然,我必须有一个id属性为“android.R.id.list”的ListView,我不确定在这种情况下在哪里实现它
以下是我的主要活动:
package com.spicycurryman.getdisciplined10.app;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;
import com.triggertrap.seekarc.SeekArc;
import com.triggertrap.seekarc.SeekArc.OnSeekArcChangeListener;
public class MainActivity extends ListActivity {
private SeekArc mSeekArc;
private SeekBar mRotation;
private SeekBar mStartAngle;
private SeekBar mSweepAngle;
private SeekBar mArcWidth;
private SeekBar mProgressWidth;
private CheckBox mRoundedEdges;
private CheckBox mTouchInside;
private CheckBox mClockwise;
private TextView mSeekArcProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSeekArc = (SeekArc) findViewById(R.id.seekArc);
mSeekArcProgress = (TextView) findViewById(R.id.seekArcProgress);
mRotation = (SeekBar) findViewById(R.id.rotation);
mStartAngle = (SeekBar) findViewById(R.id.startAngle);
mSweepAngle = (SeekBar) findViewById(R.id.sweepAngle);
mArcWidth = (SeekBar) findViewById(R.id.arcWidth);
mProgressWidth = (SeekBar) findViewById(R.id.progressWidth);
mRoundedEdges = (CheckBox) findViewById(R.id.roundedEdges);
mTouchInside = (CheckBox) findViewById(R.id.touchInside);
mClockwise = (CheckBox) findViewById(R.id.clockwise);
mRotation.setProgress(mSeekArc.getArcRotation());
mStartAngle.setProgress(mSeekArc.getStartAngle());
mSweepAngle.setProgress(mSeekArc.getSweepAngle());
mArcWidth.setProgress(mSeekArc.getArcWidth());
mProgressWidth.setProgress(mSeekArc.getProgressWidth());
mSeekArc.setOnSeekArcChangeListener(new OnSeekArcChangeListener() {
@Override
public void onStopTrackingTouch(SeekArc seekArc) {
}
@Override
public void onStartTrackingTouch(SeekArc seekArc) {
}
@Override
public void onProgressChanged(SeekArc seekArc, int progress,
boolean fromUser) {
mSeekArcProgress.setText(String.valueOf(progress));
}
});
mRotation.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
mSeekArc.setArcRotation(progress);
mSeekArc.invalidate();
}
});
mStartAngle.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
mSeekArc.setStartAngle(progress);
mSeekArc.invalidate();
}
});
mSweepAngle.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
mSeekArc.setSweepAngle(progress);
mSeekArc.invalidate();
}
});
mArcWidth.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
mSeekArc.setArcWidth(progress);
mSeekArc.invalidate();
}
});
mProgressWidth.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar view, int progress, boolean fromUser) {
mSeekArc.setProgressWidth(progress);
mSeekArc.invalidate();
}
});
mRoundedEdges.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
mSeekArc.setRoundedEdges(isChecked);
mSeekArc.invalidate();
}
});
mTouchInside.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
mSeekArc.setTouchInSide(isChecked);
}
});
mClockwise.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
mSeekArc.setClockwise(isChecked);
mSeekArc.invalidate();
}
});
}
}
下面是我的activity_main.xml,它对应于Java:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:seekarc="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
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" >
<FrameLayout
android:id="@+id/seekArcContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" >
<com.triggertrap.seekarc.SeekArc
android:id="@+id/seekArc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="30dp"
seekarc:rotation="180"
seekarc:startAngle="30"
seekarc:sweepAngle="300"
seekarc:touchInside="true"
seekarc:arcColor="#ff2ca3cc"
seekarc:progressColor="#ffcc2d2a"/>
<TextView
android:id="@+id/seekArcProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="0"
android:textSize="40sp" />
</FrameLayout>
<include
android:id="@+id/controls"
layout="@layout/controls" />
</LinearLayout>
我不确定如何解释错误,因为我的xml文件不需要添加正确的问题?您的
活动\u main.xml
必须具有id为的ListView@android:id/list
报价文件
ListActivity具有由单个,
屏幕中央的全屏列表。但是如果你愿意的话,,
您可以通过设置自己的视图布局来自定义屏幕布局
在onCreate()中使用setContentView()。要做到这一点,你必须有自己的观点
包含一个id为“@android:id/list”的ListView对象(如果需要,则为list)
它在代码中)
但是在您的代码中,
setListAdapter
?。您还可以扩展活动
而不是列表
好的。它需要扩展活动而不是ListActivity?我需要将线性布局完全改为列表?我仍在努力理解why@XiJiaopin只需更改扩展活动即可。如果你想要一份清单,那情况就不同了。但是看看代码,我看不到that@XiJiaopin你为什么首先需要ListActivity
?@Kushan我猜你是想评论其他人post@Raghunandan是的,谢谢:)我想知道为什么我没有从我想发表评论的帖子中得到回复。这就解决了这个问题:在您的情况下,只需扩展活动而不是ListActivity,它应该可以在保持ListActivity的同时修复它吗?