- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的应用程序中创建一个 MP3 播放器,但是当我使用文件浏览器选择 MP3,然后使用我的应用程序打开它时 - 由于线路上出现空指针异常,我收到强制关闭错误:
playAudio(extras.getInt(MEDIA));
如何避免这种情况?
public class MediaPlayerDemo extends Activity {
private static final String TAG = "MediaPlayerDemo";
private MediaPlayer mMediaPlayer;
private static final String MEDIA = "media";
private static final int LOCAL_AUDIO = 1;
private static final int STREAM_AUDIO = 2;
private static final int RESOURCES_AUDIO = 3;
private static final int LOCAL_VIDEO = 4;
private static final int STREAM_VIDEO = 5;
private String path;
private TextView tx;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
tx = new TextView(this);
setContentView(tx);
Bundle extras = getIntent().getExtras();
playAudio(extras.getInt(MEDIA));
}
private void playAudio(Integer media) {
try {
switch (media) {
case LOCAL_AUDIO:
/**
* TODO: Set the path variable to a local audio file path.
*/
path = "";
if (path == "") {
// Tell the user to provide an audio file URL.
Toast
.makeText(
MediaPlayerDemo.this,
"Please edit MediaPlayer_Audio Activity, "
+ "and set the path variable to your audio file path."
+ " Your audio file must be stored on sdcard.",
Toast.LENGTH_LONG).show();
}
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
break;
case RESOURCES_AUDIO:
/**
* TODO: Upload a audio file to res/raw folder and provide
* its resid in MediaPlayer.create() method.
*/
mMediaPlayer = MediaPlayer.create(this, R.raw.test_cbr);
mMediaPlayer.start();
}
tx.setText("Playing audio...");
} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// TODO Auto-generated method stub
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
}
12-17 15:55:09.377: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:09.385: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:09.390: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:09.393: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:16.234: I/fengjun1010(5461): --onServiceStateChanged,state=SIM1 0 home MetroPCS T-Mobile 310260 EDGE CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false Regist state: 1
12-17 15:55:20.395: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:20.395: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:20.395: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:20.397: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:20.397: W/Trace(5461): Unexpected value from nativeGetEnabledTags: 0
12-17 15:55:20.398: I/fengjun1010(5461): -----agoldPhoneStateListener-----
12-17 15:55:20.398: I/fengjun1010(5461): ----------mPhoneListenerFlag=true
12-17 15:55:20.437: D/AndroidRuntime(5461): Shutting down VM
12-17 15:55:20.437: W/dalvikvm(5461): threadid=1: thread exiting with uncaught exception (group=0x412ca9a8)
12-17 15:55:20.446: E/AndroidRuntime(5461): FATAL EXCEPTION: main
12-17 15:55:20.446: E/AndroidRuntime(5461): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.project/com.example.project.ui.phone.MediaPlayerDemo}: java.lang.NullPointerException
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.ActivityThread.access$600(ActivityThread.java:156)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.os.Looper.loop(Looper.java:153)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.ActivityThread.main(ActivityThread.java:5297)
12-17 15:55:20.446: E/AndroidRuntime(5461): at java.lang.reflect.Method.invokeNative(Native Method)
12-17 15:55:20.446: E/AndroidRuntime(5461): at java.lang.reflect.Method.invoke(Method.java:511)
12-17 15:55:20.446: E/AndroidRuntime(5461): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
12-17 15:55:20.446: E/AndroidRuntime(5461): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
12-17 15:55:20.446: E/AndroidRuntime(5461): at dalvik.system.NativeStart.main(Native Method)
12-17 15:55:20.446: E/AndroidRuntime(5461): Caused by: java.lang.NullPointerException
12-17 15:55:20.446: E/AndroidRuntime(5461): at com.example.project.ui.phone.MediaPlayerDemo.onCreate(MediaPlayerDemo.java:31)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.Activity.performCreate(Activity.java:5262)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
12-17 15:55:20.446: E/AndroidRuntime(5461): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
12-17 15:55:20.446: E/AndroidRuntime(5461): ... 11 more
最佳答案
最有可能的罪魁祸首是extras.getInt(MEDIA)
。如果 extras
实际上并不包含带有键 MEDIA
的对象,那么它将返回 null
。
您应该首先检查 extras
是否包含 key 。像这样的事情:
if( extras.containsKey( MEDIA ) ) {
playAudio(extras.getInt(MEDIA);
} else {
Toast.makeText(this, "No media provided in intent", Toast.LENGTH_SHORT).show();
}
关于java - 致命异常 : main Caused by: java. playAudio 处的 lang.NullPointerException(extras.getInt(MEDIA));,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644557/
我正在将 ansible 合并到我们的内部 RHN 卫星中。我有来自 Red Hat 的完全更新的 RHEL 7 基础 repo 、附加、补充、可选和 RHN 工具。当我们需要它们时,我还会将选定的包
我尝试将一些值发送到另一个 Activity 。 recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicatio
我有这个代码: Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.s
几天前,我一直在努力寻找一种方法来为我的闹钟使用自定义 Intent 。虽然我得到了明确的答案,但我必须根据一些唯一的 ID 来定制 Intent,例如。 setAction()还是有一些问题。 我这
通知正在提供旧值。我阅读了 stackoverflow 链接,但仍然不适合我: Notification passes old Intent Extras 我有一个 Activity A。当我在 Ac
我想写以下内容: result = [] for x in list(range(10)): if x%2 != 0: for a in [1,2]:
我在使用 mysql 5.5.12 时遇到了 Amazon RDS 的 IO 性能问题。有 2 种实例类型相似且价格接近: 超大数据库实例:15 GB 内存、8 个 ECU(4 个虚拟核心,每个 2
这里是 Android 的新手,我正在与一位资深人士就 bundle 和 Intent 进行辩论。这就是我一直在做的...... Intent intent = new Intent(this, Ta
我使用的是MinGW+MSYS, 我添加了 extra-include-dirs、extra-lib-dirs,但似乎没有任何东西可以帮助 cabal 找到 PCRE 库。以下是我尝试过的一些命令行,
我已将 CVS 中的一个模块 check out 到新安装的 Windows 7 计算机上。病毒扫描程序尚未安装。 后来,当我尝试进行更新时,收到以下错误消息: 无法将文件 CVS/Entries.E
Alpine镜像中的telnet在3.7版本后被转移至busybox-extras包中,需要使用apk单独安装。 现象 Alpine版本为3.8, 不再有指向busybox的telent
对lazy="extra"究竟能做什么,有没有很好的解释? 我看过的所有帖子都只是重复了一个事实,即它会引用 MyObject.ItsCollection.Count进入 select count(*
这个问题已经有答案了: Two semicolons inside a for-loop parentheses (4 个回答) Endless loop in C/C++ [closed] (12
我的包为包含的额外内容返回空字符串。不是 NPE,是实际的“空”值。关于为什么会发生这种情况的任何想法? 新 bundle String u = nul
在 es6 中,以下似乎是有效代码: function test(a1,{a=1,b=2} = {},) {} 注意函数参数中额外的,。我不确定这是否是一个错误,因为这个额外的 , 仅适用于解构分配。
我正在查看一个包含 .myClass a.extra{...} 和 .myClass a.extra:hover{...} 的 css 模板“额外”是什么意思? 最佳答案 extra 是类名。 因为你
我来自 Web 开发的前端世界,我们非常努力地尝试限制发出的 HTTP 请求的数量(通过合并 css、js 文件、图像等)。 对于数据库连接 (MySQL),显然您不希望有不必要的连接,但作为一般规则
问题是关于包含不必要的 header 以避免在子文件中多次调用它。这是场景,我有几个文件: srlogger.h srinterface.h srinterface.cc #include #inc
我有一个程序表现出奇怪的行为 #include #include using namespace std; class man{ int i ; public:
本文整理了Java中org.threeten.extra.YearQuarter类的一些代码示例,展示了YearQuarter类的具体用法。这些代码示例主要来源于Github/Stackoverflo
我是一名优秀的程序员,十分优秀!