这是一个Servic,这空指针···高手指教
package android.basic.lesson14;  02    03 import android.app.Service;  04 import android.content.Intent;  05 import android.media.MediaPlayer;  06 import android.os.IBinder;  07 import android.util.Log;  08 import android.widget.Toast;  09    10 public class MusicService extends Service {  11    12     //为日志工具设置标签  13     String tag ="MusicService";   14    15     //定义音乐播放器变量  16     MediaPlayer mPlayer;  17    18     //其他对象通过bindService方法通知该Service时该方法会被调用  19     @Override 20     public IBinder onBind(Intent intent) {  21         Toast.makeText(this,"MusicService onBind()",Toast.LENGTH_SHORT).show();  22         Log.i(tag, "MusicService onBind()");  23         mPlayer.start();  24         return null;  25     }  26    27     //其他对象通过unbindService方法通知该Service时该方法会被调用  28     @Override 29     public boolean onUnbind(Intent intent){  30         Toast.makeText(this, "MusicService onUnbind()", Toast.LENGTH_SHORT).show();  31         Log.i(tag, "MusicService onUnbind()");  32         mPlayer.stop();  33         return false;  34     }  35    36     //该服务不存在需要被创建时被调用,不管startService()还是bindService()都会在启动时调用该方法  37     @Override 38     public void onCreate(){  39         Toast.makeText(this, "MusicService onCreate()", Toast.LENGTH_SHORT).show();  40         //创建一个音乐播放器对象  41         mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu);  42         //设置可以重复播放  43         mPlayer.setLooping(true);  44         Log.i(tag, "MusicService onCreate()");  45     }  46    47     //用startService方法调用该服务时,在onCreate()方法调用之后,会调用改方法  48     @Override 49     public void onStart(Intent intent,int startid){  50         Toast.makeText(this,"MusicService onStart",Toast.LENGTH_SHORT).show();  51         Log.i(tag, "MusicService onStart()");  52         mPlayer.start();  53     }  54    55     //该服务被销毁时调用该方法  56     @Override 57     public void onDestroy(){  58         Toast.makeText(this, "MusicService onDestroy()", Toast.LENGTH_SHORT).show();  59         mPlayer.stop();  60         Log.i(tag, "MusicService onDestroy()");  61     }  62 } 
06-07 15:15:20.614: ERROR/AndroidRuntime(304): FATAL EXCEPTION: main
06-07 15:15:20.614: ERROR/AndroidRuntime(304): java.lang.RuntimeException: Unable to create service android.basic.lesson14.MusicService: java.lang.NullPointerException
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2969)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.app.ActivityThread.access$3300(ActivityThread.java:125)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.os.Looper.loop(Looper.java:123)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at java.lang.reflect.Method.invokeNative(Native Method)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at java.lang.reflect.Method.invoke(Method.java:521)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at dalvik.system.NativeStart.main(Native Method)
06-07 15:15:20.614: ERROR/AndroidRuntime(304): Caused by: java.lang.NullPointerException
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.basic.lesson14.MusicService.onCreate(MusicService.java:43)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2959)
06-07 15:15:20.614: ERROR/AndroidRuntime(304):     ... 10 more

解决方案 »

  1.   

    40 //创建一个音乐播放器对象   41 mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu); 
    增加创建是否成功的判断
    if(mPlayer != null) {
        mPlayer.setLooping(true);
    }或者直接用new创建mPlayer
    if (mPlayer== null) {
        mPlayer= new MediaPlayer();
    }
      

  2.   

    还是空指针异常
    我试过注释这句mPlayer.setLooping(true);
    也不行
    mPlayer=MediaPlayer.create(getApplicationContext(), R.raw.babayetu); 
    这句不是可以返回一个对象了吗?怎么会是空的呢?
      

  3.   

    在AndroidManifest.xml注册service了吗?启动服务用的startService()还是bindService()啊?
      

  4.   

     <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MainHelloService"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>    <service android:enabled="true" android:name=".MusicService">
        </service>
    已经注册service
    //定义点击监听器
            OnClickListener ocl= new OnClickListener(){
    public void onClick(View v) {
    //显示指定intent所指的对象是个Service
    Intent intent = new Intent(MainHelloService.this,android.basic.lesson14.MusicService.class);
    switch(v.getId()){
    case R.id.Button01:
    //开始服务
    startService(intent);
    break;
    case R.id.Button02:
    //停止服务
    stopService(intent);
    break;
    case R.id.Button03:
    //绑定服务
    bindService(intent,conn,Context.BIND_AUTO_CREATE);
    break;
    case R.id.Button04:
    //解除绑定
    unbindService(conn);
    break;
    }
    }
            };
    我两种方法都有定义
      

  5.   

    MediaPlayer.create使用services的context试试呢。。