如何解决 Android 中的 NullPointerException 错误? [英] How to solve NullPointerException error in Android?

查看:44
本文介绍了如何解决 Android 中的 NullPointerException 错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码在 Eclipse 模拟器中运行流畅,但在我的 Android 手机和平板电脑上运行时出现问题.

The below code runs smoothly in the emulator from Eclipse, but there are problems when I run it on my Android phone and tablet.

public class RingerActivity extends Activity{
/** Called when the activity is first created. */
Button press;
boolean tone = true;
MediaPlayer mp;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mp = new MediaPlayer();
    mp = MediaPlayer.create(RingerActivity.this, R.raw.alarm);
    //Error occurs at here
    mp.start();

    Handler h = new Handler();
    Runnable stopPlaybackRun = new Runnable() {
        public void run(){
            mp.stop();
            mp.release();
        }    
    };
    h.postDelayed(stopPlaybackRun, 20 * 1000);

    AudioManager manager = (AudioManager)getSystemService(AUDIO_SERVICE);
    if(manager!=null){
        manager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        int maxVolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        manager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, 0);
    }
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){

    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
        Toast.makeText(this, "Volume Up", Toast.LENGTH_LONG).show();
        return true;
    }

    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
        Toast.makeText(this, "Volume Down", Toast.LENGTH_LONG).show();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

我在mp.start()"行中得到一个NullPointException".我一直在研究这个问题一段时间,但我真的不知道发生了什么,我在我的 Android 智能手机和平板电脑(姜饼和 ICS)上尝试了这个,但应用程序强制关闭.我需要你们的帮助...谢谢...

I get a "NullPointException" in line "mp.start()". I have been working on this problem for a while, but I really do not know what is happening, I tried this on both my Android smartphone and tablet (Gingerbread and ICS), but the app force closes. I need help from you guys... thanks...

日志猫

11-09 15:41:09.909: E/AndroidRuntime(11975): FATAL EXCEPTION: main
11-09 15:41:09.909: E/AndroidRuntime(11975): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.testing.ringer/com.testing.ringer.RingerActivity}: java.lang.NullPointerException
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.ActivityThread.access$1500(ActivityThread.java:135)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.os.Looper.loop(Looper.java:150)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.ActivityThread.main(ActivityThread.java:4385)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at java.lang.reflect.Method.invokeNative(Native Method)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at java.lang.reflect.Method.invoke(Method.java:507)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at dalvik.system.NativeStart.main(Native Method)
11-09 15:41:09.909: E/AndroidRuntime(11975): Caused by: java.lang.NullPointerException
11-09 15:41:09.909: E/AndroidRuntime(11975):    at com.testing.ringer.RingerActivity.onCreate(RingerActivity.java:23)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
11-09 15:41:09.909: E/AndroidRuntime(11975):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
11-09 15:41:09.909: E/AndroidRuntime(11975):    ... 11 more

铃声清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.testing.ringer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".RingerActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

推荐答案

NullPointerException 表示 mp 为空.这意味着 MediaPlayer.create() 失败.R.raw.alarm 是否存在?

NullPointerException means that mp is null. This means the MediaPlayer.create() failed. Does R.raw.alarm exist?

这篇关于如何解决 Android 中的 NullPointerException 错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆