gpt4 book ai didi

java - 尽管有 xml,但仍因缺少 ListView 而收到 RuntimeException

转载 作者:行者123 更新时间:2023-12-01 12:51:04 25 4
gpt4 key购买 nike

您好,我在我的 Android 项目中,收到以下错误。我已经检查了几乎所有类似的问题,我正在尝试在这里使用一些解决方案

RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

但它们似乎不适用。

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.invokeNative( native 方法) 在 java.lang.reflect.Method.invoke(Method.java:515)

显然,我必须有一个 id 属性为“android.R.id.list”的 ListView,并且我不确定在这种情况下在哪里实现它。

这是我的 MainActivity Java:

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();
}
});

}

}

这是我对应于Java的activity_main.xml:

<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 文件不需要添加所要求的内容,对吗?

最佳答案

您的activity_main.xml必须有一个ID为@android:id/list的ListView

引用文档

ListActivity has a default layout that consists of a single, full-screen list in the center of the screen. However, if you desire, you can customize the screen layout by setting your own view layout with setContentView() in onCreate(). To do this, your own view MUST contain a ListView object with the id "@android:id/list" (or list if it's in code)

但是在你的代码中你在哪里有setListAdapter?您也可以扩展 Activity 而不是 ListAcitvity

关于java - 尽管有 xml,但仍因缺少 ListView 而收到 RuntimeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com