Android例外初始化错误
我在以下代码行中得到一个“ExceptionInitializeError”: (活动1) (活动2) 有人能告诉我我做错了什么吗 有关完整代码,请参见下面的 (活动1)Android例外初始化错误,android,Android,我在以下代码行中得到一个“ExceptionInitializeError”: (活动1) (活动2) 有人能告诉我我做错了什么吗 有关完整代码,请参见下面的 (活动1) package awesome.music.player; 导入android.app.Activity; 导入android.content.Intent; 导入android.database.Cursor; 导入android.os.Bundle; 导入android.provider.BaseColumns; 导入an
package awesome.music.player;
导入android.app.Activity;
导入android.content.Intent;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.provider.BaseColumns;
导入android.provider.MediaStore;
导入android.provider.MediaStore.Audio.album列;
导入android.provider.MediaStore.Audio.ArtistColumns;
导入android.provider.MediaStore.Audio.AudioColumns;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ListView;
导入android.widget.SimpleCursorAdapter;
公共类ArtistsActivity扩展了活动实现和侦听器{
私人游标艺术家游标;
@抑制警告(“弃用”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.artistsview);
字符串[]artistColumns={BaseColumns.\u ID,artistColumns.ARTIST};
//为每行返回的列。
artistCursor=managedQuery(
MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI、Artist Columns、,
空,空,空);
ListView ListView=(ListView)findViewById(R.id.ListViewArtisters);
setOnItemClickListener(this);
//将on item click侦听器设置为此活动中的第一个列表视图
字符串[]显示字段=新字符串[]{ArtistColumns.ARTIST};
//将所有艺术家名称设置为数组“displayfields”
int[]displayViews=newint[]{R.id.artistTitle};
//要显示的行数和绑定它们的位置
SimpleCrsorAdapter artistAdapter=新SimpleCrsorAdapter(此,
R.layout.artistitem、artistCursor、显示字段、显示视图);
setAdapter(artistAdapter);
}
//获取显示字段数组,并绑定到匹配的显示行
公共视图单击(适配器视图a、视图v、内部位置、长id){
if(艺术家光标移动位置(位置)){
Playlist.selection=AudioColumns.ARTIST+“=?”;
Playlist.selectionArgs=新字符串[]{artistCursor
.getString(artistCursor.getColumnIndex(AlbumColumns.ARTIST))};
Playlist.artist=artistCursor.getString(artistCursor
.getColumnIndex(ArtistColumns.ARTIST));
意向意向=新意向(ArtistsActivity.this,
艺术类);
星触觉(意向);
}
}
}
(活动2)
package awesome.music.player;
导入java.util.ArrayList;
导入android.content.ContentUris;
导入android.net.Uri;
公共类播放列表{
静态ArrayList路径列表=新建ArrayList();
静态ArrayList artistList=新ArrayList();
静态ArrayList albumList=新建ArrayList();
静态ArrayList titleList=新ArrayList();
静态ArrayList idList=新建ArrayList();
静态ArrayList durationList=新ArrayList();
静态指数;
静态字符串路径;
静态弦乐艺术家;
静态字符串相册;
静态字符串albumId;
静态字符串数字歌曲;
静态字符串选择;
静态字符串[]selectionArgs;
静态字符串totalSongduration;//设置
静态字符串songDuration=durationList.get(currentSongIndex);
静态字符串currentAlbumId=Playlist.idList
.get(Playlist.currentSongIndex);
静态整数currentAlbumIdLong=Integer.parseInt(currentAlbumId);
静态Uri artworkUri=Uri
.parse(“content://media/external/audio/albumart");
静态Uri currentSongUri=ContentUris.withAppendedId(artworkUri,
(长);;;
静态int totalSongDuration=Integer.parseInt(songDuration);
}
谢谢你的帮助。不要使用
Static
这是一个坏习惯,而是使用“Static”使对象成为类并使用它
public class Playlist {
ArrayList<String> pathList = new ArrayList<String>();
....
...
}
抛出ExceptionInInitializerError以指示在计算静态初始值设定项或静态变量初始值设定项期间发生异常。检查您的代码是否有任何静态初始化逻辑。检查播放列表中的静态初始化,如
Integer.parseInt(currentAlbumId)代码>在初始化时,currentAlbumId具有null
值。感谢您的回复。如果您能详细说明,我将不胜感激,因为我在InitializeRerror中键入ExceptionInInitializerError时也发现了同样的问题,但这并没有真正起到帮助作用。非常感谢。我担心这会使我的代码过于复杂,我感觉我已经快到了。hotveryspicy,你能告诉我如何将其他变量从活动1传递到活动2吗?你可以使用intent和intent。putExra()和intent.getExtras()将帮助你在活动之间传递值。
static String selection;
package awesome.music.player;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.BaseColumns;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio.AlbumColumns;
import android.provider.MediaStore.Audio.ArtistColumns;
import android.provider.MediaStore.Audio.AudioColumns;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class ArtistsActivity extends Activity implements OnItemClickListener {
private Cursor artistCursor;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.artistsview);
String[] artistColumns = { BaseColumns._ID, ArtistColumns.ARTIST };
// The columns to return for each row.
artistCursor = managedQuery(
MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, artistColumns,
null, null, null);
ListView listView = (ListView) findViewById(R.id.listViewArtists);
listView.setOnItemClickListener(this);
// set an on item click listener to the first list view in this activity
String[] displayFields = new String[] { ArtistColumns.ARTIST };
// set all the artist names to the array "displayfields"
int[] displayViews = new int[] { R.id.artistTitle };
// number of rows to display and where to bind them
SimpleCursorAdapter artistAdapter = new SimpleCursorAdapter(this,
R.layout.artistitem, artistCursor, displayFields, displayViews);
listView.setAdapter(artistAdapter);
}
// Take the display fields array, and bind to the matching display row
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
if (artistCursor.moveToPosition(position)) {
Playlist.selection = AudioColumns.ARTIST + "=?";
Playlist.selectionArgs = new String[] { artistCursor
.getString(artistCursor.getColumnIndex(AlbumColumns.ARTIST)) };
Playlist.artist = artistCursor.getString(artistCursor
.getColumnIndex(ArtistColumns.ARTIST));
Intent intent = new Intent(ArtistsActivity.this,
ArtistAlbumsActivity.class);
startActivity(intent);
}
}
}
package awesome.music.player;
import java.util.ArrayList;
import android.content.ContentUris;
import android.net.Uri;
public class Playlist {
static ArrayList<String> pathList = new ArrayList<String>();
static ArrayList<String> artistList = new ArrayList<String>();
static ArrayList<String> albumList = new ArrayList<String>();
static ArrayList<String> titleList = new ArrayList<String>();
static ArrayList<String> idList = new ArrayList<String>();
static ArrayList<String> durationList = new ArrayList<String>();
static int currentSongIndex;
static String currentSongPath;
static String artist;
static String album;
static String albumId;
static String numSongs;
static String selection;
static String[] selectionArgs;
static String totalSongduration; // Set
static String songDuration = durationList.get(currentSongIndex);
static String currentAlbumId = Playlist.idList
.get(Playlist.currentSongIndex);
static Integer currentAlbumIdLong = Integer.parseInt(currentAlbumId);
static Uri artworkUri = Uri
.parse("content://media/external/audio/albumart");
static Uri currentSongUri = ContentUris.withAppendedId(artworkUri,
currentAlbumIdLong);;
static int totalSongDuration = Integer.parseInt(songDuration);
}
public class Playlist {
ArrayList<String> pathList = new ArrayList<String>();
....
...
}
public class ArtistsActivity extends Activity implements OnItemClickListener {
private Playlist mPlaylist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.artistsview);
mPlaylist= new Playlist();
}
}