当前位置: 代码迷 >> Android >> 求指点,android空指针错误
  详细解决方案

求指点,android空指针错误

热度:67   发布时间:2016-04-28 07:20:09.0
求指点,android空指针异常
小弟是android新手,最近在学service,想做个简易的音乐播放器,能实现播放、暂停(继续)、重播、停止。
在测试时遇见空指针错误,检查了好久都还是不知道哪错了,在此贴上代码求各位大神指点。

MainActivity.java:



package ji.shaobin.misicplayer;

import java.io.File;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;


public class MainActivity extends Activity {
private EditText editText;
private Button btn_play,btn_pause,btn_restart,btn_stop;
private PlayerService.PlayerBinder binder;
private boolean pause=false;
File file;
Intent service;
private PlayerConnection conn=new PlayerConnection();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new PlayerService();
init();
}
public void init(){
editText=(EditText)this.findViewById(R.id.edit);
btn_play=(Button)this.findViewById(R.id.play);
btn_pause=(Button)this.findViewById(R.id.pause);
btn_restart=(Button)this.findViewById(R.id.restart);
btn_stop=(Button)this.findViewById(R.id.stop);
btn_play.setOnClickListener(listener);
btn_pause.setOnClickListener(listener);
btn_restart.setOnClickListener(listener);
btn_stop.setOnClickListener(listener);

service=new Intent(MainActivity.this,PlayerService.class);
String name=editText.getText().toString();
service.putExtra("name", name);
}


OnClickListener listener=new View.OnClickListener() {

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
bindService(service, conn, BIND_AUTO_CREATE);//建立服务连接
binder.player();
break;
case R.id.pause:
if(pause){
binder.pause();
btn_pause.setText("继续");
pause=false;
}else{
binder.pause();
btn_pause.setText("暂停");
pause=true;;
}
break;
case R.id.restart:
binder.restart();
break;
case R.id.stop:
binder.stop();
}

}
};
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(conn);
}


private class PlayerConnection implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
binder=(PlayerService.PlayerBinder) service;
}

@Override
public void onServiceDisconnected(ComponentName name) {
binder=null;
}

}
}


PlayerService.java   



package ji.shaobin.misicplayer;

import java.io.File;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Binder;
import android.os.Environment;
import android.os.IBinder;
import android.widget.Toast;

public class PlayerService extends Service {
private IBinder binder=new PlayerBinder();
private String path;
private int position;
public  MediaPlayer mediaPlayer=new MediaPlayer();
private File file;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String name=intent.getStringExtra("name");
file=new File(Environment.getExternalStorageDirectory(),name);
return super.onStartCommand(intent, flags, startId);

}
private void play(int position){
if(file.exists()){
path=file.getAbsolutePath();
}else{
path=null;
Toast.makeText(this, "该文件不存在SD卡中", 1).show();
}
try {
mediaPlayer.reset();//把各项参数恢复到初始状态
mediaPlayer.setDataSource(path);
mediaPlayer.prepare();//缓冲
mediaPlayer.setOnPreparedListener(new PreparedListener(position));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Override
public IBinder onBind(Intent arg0) {
return binder;
}
public class PlayerBinder extends Binder {
public void player(){
if(mediaPlayer!=null){
play(0);
}
}
public void pause(){
if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
position=mediaPlayer.getCurrentPosition();
mediaPlayer.pause();
}else{
mediaPlayer.start();
mediaPlayer.seekTo(position);
}
}
public void restart(){
if(mediaPlayer!=null){
mediaPlayer.start();
mediaPlayer.seekTo(0);
}
}
public void stop(){
if(mediaPlayer!=null){
  相关解决方案