mediaplayer-关于安卓button的findviewbyid导致程序报错,和adapter的使用错误

问题描述

关于安卓button的findviewbyid导致程序报错,和adapter的使用错误

package com.example.mp3test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;

public class MainActivity extends Activity {
private TabHost tabHost;
private TabSpec specSongs;
private TabSpec specArtists;
private TabSpec specAlbums;
private TabSpec specPlaylist;

private MediaPlayer player;
private SeekBar audioSeekbar;

private Button playBtn;
private Button pauseBtn;
private Button nextBtn;
private Button preBtn;
private Button stopBtn;

private ListView songsList;
private ListView artistsList;
private ListView albumsList;
private ListView playList;

private List<Map<String,Object>> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tabHost = (TabHost) findViewById(android.R.id.tabhost);
    tabHost.setup();
    audioSeekbar = (SeekBar) findViewById(R.id.seekBar1);

// playBtn = (Button) findViewById(R.id.imagebstart);
// nextBtn = (Button) findViewById(R.id.imagebnext);
// preBtn = (Button) findViewById(R.id.imagebpre);
// stopBtn = (Button) findViewById(R.id.imagebstop);
songsList = (ListView) findViewById(R.id.listSongs);
artistsList = (ListView) findViewById(R.id.listArtists);
albumsList = (ListView) findViewById(R.id.listAlbums);
playList = (ListView) findViewById(R.id.listPlaylist);
dataList = new ArrayList>();
//init();
//set_tab_style();
add_tabs();
//set_Adapter();
}

private void init(){
    tabHost = (TabHost) findViewById(android.R.id.tabhost);
    audioSeekbar = (SeekBar) findViewById(R.id.seekBar1);
    playBtn = (Button) findViewById(R.id.imagebstart);
    nextBtn = (Button) findViewById(R.id.imagebnext);
    preBtn = (Button) findViewById(R.id.imagebpre);
    stopBtn = (Button) findViewById(R.id.imagebstop);
    songsList = (ListView) findViewById(R.id.listSongs);
    artistsList = (ListView) findViewById(R.id.listArtists);
    albumsList = (ListView) findViewById(R.id.listAlbums);
    playList = (ListView) findViewById(R.id.listPlaylist);
    dataList = new ArrayList<Map<String,Object>>();
}

private void set_Adapter(){
    setListAdpter(songsList, getMp3Infos("songs"));
    setListAdpter(artistsList, getMp3Infos("artists"));
    setListAdpter(albumsList, getMp3Infos("albums"));
    setListAdpter(playList, getMp3Infos("playlist"));
}

private void set_tab_style(){
    LinearLayout layout = (LinearLayout)tabHost.getChildAt(0);
    TabWidget tw = (TabWidget)layout.getChildAt(0);
}

private void add_tabs(){
    specSongs = tabHost.newTabSpec("Tab 1");
    specSongs.setContent(R.id.tabSongs);
    specSongs.setIndicator("Songs");
    tabHost.addTab(specSongs);

    specArtists = tabHost.newTabSpec("Tab 2");
    specArtists.setContent(R.id.tabArtists);
    specArtists.setIndicator("Artists");
    tabHost.addTab(specArtists);

    specAlbums = tabHost.newTabSpec("Tab 3");
    specAlbums.setContent(R.id.tabAlbums);
    specAlbums.setIndicator("Albums");
    tabHost.addTab(specAlbums);

    specPlaylist = tabHost.newTabSpec("Tab 4");
    specPlaylist.setContent(R.id.tabPlaylist);
    specPlaylist.setIndicator("Playlist");
    tabHost.addTab(specPlaylist);
}

public List<Mp3Info> getMp3Infos(String c){
    Cursor cursor = null;
    if(c.equals("songs")){
        cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
    }
    else if(c.equals("artists")){
        cursor = getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Artists.DEFAULT_SORT_ORDER);
    }
    else if(c.equals("albums")){
        cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);
    }
    else if(c.equals("playlist")){
        cursor = getContentResolver().query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
                null, null, null, MediaStore.Audio.Playlists.DEFAULT_SORT_ORDER);
    }
    List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
    for(int i = 0; i < cursor.getCount(); ++i){
        Mp3Info mp3info = new Mp3Info();
        cursor.moveToNext();
        String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
        String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
        String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
        long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
        int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
        if(isMusic != 0){
            mp3info.title = title;
            mp3info.album = album;
            mp3info.artist = artist;
            mp3info.duration = duration;
            mp3Infos.add(mp3info);
        }
    }
    return mp3Infos;
}

public void setListAdpter(ListView mMusiclist, List<Mp3Info> mp3Infos) {
    for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
        Mp3Info mp3Info = (Mp3Info) iterator.next();
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("title", mp3Info.getTitle());
        map.put("Artist", mp3Info.getArtist());
        map.put("pic", R.drawable.music);
        dataList.add(map);
    }
    SimpleAdapter mAdapter = new SimpleAdapter(this, dataList,
            R.layout.item, new String[] { "title", "Artist", "pic" },
            new int[] {R.id.itemsongs, R.id.itemArtists, R.id.itempic });
    mMusiclist.setAdapter(mAdapter);
}  

public class Mp3Info{
    private String title;
    private String album;
    private String artist;
    private long duration;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public long getDuration() {
        return duration;
    }

    public void setDuration(long duration) {
        this.duration = duration;
    }
}

}


以上代码,谢谢

解决方案

http://www.2cto.com/kf/201204/127404.html

解决方案二:

findViewById()使用常见错误
findViewById()使用常见错误

时间: 2025-01-08 05:53:30

mediaplayer-关于安卓button的findviewbyid导致程序报错,和adapter的使用错误的相关文章

关于安卓程序报错,自动关闭

问题描述 关于安卓程序报错,自动关闭 我在android studio上做了个程序,有十几个activity,运行过程会偶尔报错, 然后自动关闭. 比如说点击进入一个activity,可能前点击几次都不报错,但是后一次就报错了. 就是说这种报错不可控,不是每次都错, 不清楚它什么时候会报错. 我个人怀疑是不是内存溢出了,程序在运行过程中,内存没有能及时回收,导致 内存消耗越来越大,导致中途意外报错退出! 解决方案 别猜测,挂上调试环境,一般都会有日志的,再不行,就捕获crash日志,自己写或者用

SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析

SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析 所在项目客户的一家工厂上线已经超过半年,其业务部门提出一个使用了半年的RF枪程序,突然不能使用了.程序直接Dump了:       经过调查,上个周末客户SAP团队对服务器做了一次maintenance.   因此我们初步断定,是此次maintenance里可能是有Kernel升级了,导致之前的程序的语法不能用了.我们找到相关的代码,发现如下代码里(line 447):   Insert into chvw_p

iis8-windows8.1 IIS8配置应用程序报错

问题描述 windows8.1 IIS8配置应用程序报错 windows8.1 IIS8配置应用程序,打开网站是提示 如下: 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.AccessViolationException: 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 源错误: 执行当前 Web 请求期间生成了未经处理

c#-C#仿QQ聊天的代码。在打开聊天窗口并输入聊天内容执行发送时,程序报错

问题描述 C#仿QQ聊天的代码.在打开聊天窗口并输入聊天内容执行发送时,程序报错 这是一段仿QQ聊天的代码.在打开聊天窗口并输入聊天内容执行发送时,程序报错: 参数化查询 '(@FromUserId int,@ToUserId int,@Message nvarchar(1),@MessageType' 需要参数 '@MessageState',但未提供该参数. 错误详细信息为: 未处理 System.Data.SqlClient.SqlException Message="参数化查询 '(@F

极光推送调试的程序报错

问题描述 极光推送调试的程序报错 极光推送调试的程序报错,不知道是什么原因,求解,谢谢 解决方案 定位到对应的源码行数分析 解决方案二: java.lang.ClassNotFoundException:java.lang.AutoCloseable 在加上异常是ClassNotFoundException 该类不存在 java.lang.AutoCloseable 这个类不存在

park serializable-Spark程序报错“Task not serializable”

问题描述 Spark程序报错"Task not serializable" 用java写的Spark程序在运行时报错"org.apache.spark.SparkException: Task not serializable",我在一个类里实现数据处理的功能,main函数定义在另一个类内部,在main函数中调用前一个类中的方法.虽然两个类都实现了Serilizable接口,但是还是无济于事.求大虾赐教!

lnk1120-vs2010运行程序报错:error LNK2019: 无法解析的外部符号

问题描述 vs2010运行程序报错:error LNK2019: 无法解析的外部符号 如题,我在vs2010环境下做C++练习题时出现该错误.程序代码如下: //array.h#ifndef ARRAY_H#define ARRAY_Htemplate<typename T>class Array{public: Array(int n);//数组首地址不用指定,待会分配 Array(Array &a); ~Array(); T getAt(int i);//返回第i个数组元素 voi

mingw-Code::Blocks Windows环境下编译HelloWorld程序报错,求高手支招!

问题描述 Code::Blocks Windows环境下编译HelloWorld程序报错,求高手支招! 很简单的Hello World 程序,编译时提示: D:MinGWincludec++3.4.5bitscodecvt.h|475 这个文件中引用的 bits/codecvt_specializations.h 文件找不到 请问是哪里出了问题? ?

c++-C++多线程外部排序的程序报错 bad allocaltion

问题描述 C++多线程外部排序的程序报错 bad allocaltion http://www.cnblogs.com/Jedimaster/archive/2013/11/17/3427761.html 按照这个网页给的方法,写多线程的外部排序算法.我先用第一个产生数据的算法 产生了429496729个int大小的数据.整个文件大概有1.59G这么大.然后分成4个进程,来处理数据.在main函数中,将iNumLocalItems设置为 20 * 1024 * 1024以及更小没有任何错误,但是