【发布时间】:2026-01-07 03:25:01
【问题描述】:
我正在尝试构建一个视频播放器,我设法获得了徽标屏幕,但是当我的应用从徽标移动到播放列表时...它崩溃了
package com.example.droid;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import android.net.Uri;
import android.content.ContentResolver;
import android.database.Cursor;
import android.widget.ListView;``
import android.os.Bundle;
import android.app.ListActivity;
class VidFilter implements FilenameFilter {
public boolean accept(File dir, String name){
return (name.endsWith(".3gp"));
}
}
public class playlist extends ListActivity {
private long id;
private String title;
private ArrayList<playlist> videoList;
private ListView videoView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.videoplaylist);
videoView = (ListView)findViewById(R.id.myList);
videoList = new ArrayList<playlist>();
getvideoList();
VideoAdapter VAdap = new VideoAdapter(this, videoList);
videoView.setAdapter(VAdap);
Collections.sort(videoList, new Comparator<playlist>(){
public int compare(playlist a, playlist b){
return a.getTTL().compareTo(b.getTTL());
}
});
}
public void getvideoList(){
//retrieve video info
ContentResolver videoResolver = getContentResolver();
Uri videoUri = android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI;
Cursor videoCursor = videoResolver.query(videoUri, null, null, null, null);
if (videoCursor!=null && videoCursor.moveToFirst()){
int titleColumn = videoCursor.getColumnIndex
(android.provider.MediaStore.Video.Media.TITLE);
int idColumn = videoCursor.getColumnIndex
(android.provider.MediaStore.Video.Media._ID);
//add video to list
do {
long thisId = videoCursor.getLong(idColumn);
String thisTitle = videoCursor.getString(titleColumn);
videoList.add(new playlist(thisId, thisTitle));
}
while (videoCursor.moveToNext());
}
}
public playlist(long videoID, String videoTitle) {
id= videoID;
title=videoTitle;}
public long getID(){return id;}
public String getTTL(){return title;}
public static playlist get(int position) {
// TODO Auto-generated method stub
return null;
}
}
11-27 17:42:58.409:I/Process(19075):发送信号。 PID:19075 SIG:9 11-27 17:43:04.429:E/MoreInfoHPW_View(19485):父视图不是 TextView 11-27 17:43:04.519: D/dalvikvm(19485): GC_FOR_ALLOC 释放 211K, 12% 释放 16218K/18404K, 暂停 13ms, 共 13ms 11-27 17:43:04.519: D/Activity(19485): #3 setTransGradationModeColor 为 false 11-27 17:43:04.579: I/Adreno-EGL(19485): : EGL 1.4 高通构建: () 11-27 17:43:04.579:I/Adreno-EGL(19485):OpenGL ES 着色器编译器版本:E031.24.02.11 11-27 17:43:04.579:I/Adreno-EGL(19485):构建日期:2014 年 9 月 4 日星期四 11-27 17:43:04.579:I/Adreno-EGL(19485):本地分支:LA.3.6.1_20140904_070_patches 11-27 17:43:04.579:I/Adreno-EGL(19485):远程分支: 11-27 17:43:04.579:I/Adreno-EGL(19485):本地补丁: 11-27 17:43:04.579:I/Adreno-EGL(19485):重建分支: 11-27 17:43:04.599: I/HWUI(19485): EGLImpl-HWUI 受保护的 EGL 上下文已创建 11-27 17:43:04.599:I/qdutils(19485):部分更新状态:启用 11-27 17:43:04.599:I/qdutils(19485):左对齐:8 11-27 17:43:04.599:I/qdutils(19485):宽度对齐:8 11-27 17:43:04.599:I/qdutils(19485):顶部对齐:1 11-27 17:43:04.599:I/qdutils(19485):高度对齐:1 11-27 17:43:04.599:I/qdutils(19485):最小 ROI 宽度:1 11-27 17:43:04.599:I/qdutils(19485):最小 ROI 高度:2 11-27 17:43:04.599:I/qdutils(19485):需要 ROI 合并:1 11-27 17:43:04.599:I/qdutils(19485):左拆分 = 720 11-27 17:43:04.599: I/qdutils(19485): 右拆分=720 11-27 17:43:04.609: D/OpenGLRenderer(19485): 启用调试模式 0 11-27 17:43:09.579: D/dalvikvm(19485): newInstance 失败: no () 11-27 17:43:09.579: D/AndroidRuntime(19485): 关闭 VM 11-27 17:43:09.579: W/dalvikvm(19485): threadid=1: 线程以未捕获的异常退出 (group=0x418efda0)
11-27 17:43:09.579:E/AndroidRuntime(19485):致命异常:主要 11-27 17:43:09.579: E/AndroidRuntime(19485): 进程: com.example.droid, PID: 19485 11-27 17:43:09.579: E/AndroidRuntime(19485): java.lang.RuntimeException: 无法实例化活动 ComponentInfo{com.example.droid/com.example.droid.playlist}: java.lang.InstantiationException: 可以't 实例化类 com.example.droid.playlist;没有空的构造函数 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2408) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2599) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.ActivityThread.access$900(ActivityThread.java:174) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.os.Handler.dispatchMessage(Handler.java:102) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.os.Looper.loop(Looper.java:146) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.ActivityThread.main(ActivityThread.java:5748) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 java.lang.reflect.Method.invokeNative(Native Method) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 java.lang.reflect.Method.invoke(Method.java:515) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 11-27 17:43:09.579: E/AndroidRuntime(19485): at dalvik.system.NativeStart.main(Native Method) 11-27 17:43:09.579:E/AndroidRuntime(19485):原因:java.lang.InstantiationException:无法实例化类 com.example.droid.playlist;没有空的构造函数 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 java.lang.Class.newInstanceImpl(Native Method) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 java.lang.Class.newInstance(Class.java:1208) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.Instrumentation.newActivity(Instrumentation.java:1067) 11-27 17:43:09.579: E/AndroidRuntime(19485): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2399) 11-27 17:43:09.579: E/AndroidRuntime(19485): ... 11 更多 11-27 17:43:12.009: I/Process(19485): 发送信号。 PID:19485 SIG:9
【问题讨论】:
-
没有空的构造函数。这是填充 bean 属性所必需的
-
当它是一个活动时,你是否试图实例化一个播放列表?这段代码到底发生了什么?请去学习 Android 基础知识