2013-09-16 4 views
0

У меня есть nullpointexeption, что делает мое приложение неспособным приостановить. (Возможно, важно отметить, что я работаю над фрагментами SherlockActionBar).Невозможно приостановить действие nullpointexeption

Я думаю, что это из-за этой строки кода:

// SEND THE FILE 
String sharePath = Environment.getExternalStorageDirectory().getPath() 
      + "/Soundboard/Ringtones/custom_ringtone.ogg"; 
Uri uri = Uri.parse(sharePath); 
Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("audio/*"); 
share.putExtra(Intent.EXTRA_STREAM, uri); 
startActivity(Intent.createChooser(share, "Share Sound File")); 

А вот мой журнал:

09-16 19:33:57.030: E/AndroidRuntime(32080): FATAL EXCEPTION: main 
09-16 19:33:57.030: E/AndroidRuntime(32080): java.lang.RuntimeException: Unable to pause activity {com.mega.sb/com.mega.sb.MainActivity}: java.lang.NullPointerException 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2879) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2835) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2813) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread.access$800(ActivityThread.java:140) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.os.Looper.loop(Looper.java:137) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread.main(ActivityThread.java:4898) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at java.lang.reflect.Method.invokeNative(Native Method) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at java.lang.reflect.Method.invoke(Method.java:511) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at dalvik.system.NativeStart.main(Native Method) 
09-16 19:33:57.030: E/AndroidRuntime(32080): Caused by: java.lang.NullPointerException 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at com.actionbarsherlock.app.SherlockFragmentActivity.onSaveInstanceState(SherlockFragmentActivity.java:126) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.Activity.performSaveInstanceState(Activity.java:1181) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1219) 
09-16 19:33:57.030: E/AndroidRuntime(32080): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2861) 
09-16 19:33:57.030: E/AndroidRuntime(32080): ... 12 more 

Заранее спасибо!

ответ

1

Проверьте путь к файлу вы можете войти, чтобы увидеть, если какая-либо переменная равна нулю или нет, и использовать getAbsolutePath() вместо getPath()

String sharePath = Environment.getExternalStorageDirectory().getAbsolutePath() 
      + "/Soundboard/Ringtones/custom_ringtone.ogg"; 
File f = new File(sharePath); 
if(f!=null && f.exists()) { 
Uri uri = Uri.parse(sharePath); 
.... 

} 
+0

Мое приложение не врезаться больше. Но он также не устанавливает файл как мелодию звонка. Кроме того, приложение падает, когда я нажимаю кнопку «домой». Но это сработало, пока я не добавил эту строку кода – Wannabe

+0

, вы переопределяете метод 'onSaveInstanceState'? – Sunny

+0

И если код не устанавливает файл в качестве мелодии звонка, проверьте свой путь к файлу. Файл должен находиться в указанном пути. – Sunny

Смежные вопросы