- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,这是我的代码,我试图做的是在我触摸开始出现的屏幕可绘制对象后,首先在背景 (touch2) 中出现一张图片。那么问题出在哪里呢?
问题是在我触摸屏幕之前,当我看到 touch2 图像时,如果我按下后退按钮,我会收到强制关闭和日志 cat 中的错误,它说 Activity 无法破坏,因为空指针。这是我的代码
RelativeLayout psirenlayout;
MediaPlayer mp;
private boolean played;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//full screeen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//full screen
setContentView(R.layout.constrc);
//brightness full
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
//brightness full
psirenlayout = (RelativeLayout) findViewById(R.id.psirenlayout);
this.psirenlayout.setBackgroundResource(R.drawable.touch2);
played=false;
psirenlayout.setOnTouchListener(new OnTouchListener() {
@SuppressWarnings("deprecation")
@Override
public boolean onTouch(View v, MotionEvent event) {
int DELAY = 80;
if (!played){
playSound();
played=true;
}
if(event.getAction() == MotionEvent.ACTION_UP) {
final RelativeLayout psirenlayout = ((RelativeLayout) findViewById(R.id.psirenlayout));
ColorDrawable f = new ColorDrawable(0xffff0000);
ColorDrawable f2 = new ColorDrawable(0xffff7f00);
ColorDrawable f3 = new ColorDrawable(0xffffff00);
ColorDrawable f4 = new ColorDrawable(0xff00ff00);
ColorDrawable f5 = new ColorDrawable(0xff00ffff);
ColorDrawable f6 = new ColorDrawable(0xff0000ff);
ColorDrawable f7 = new ColorDrawable(0xff8b00ff);
ColorDrawable f8 = new ColorDrawable(0xffff0000);
ColorDrawable f9 = new ColorDrawable(0xffff7f00);
ColorDrawable f10 = new ColorDrawable(0xffffff00);
ColorDrawable f11 = new ColorDrawable(0xff00ffff);
ColorDrawable f12 = new ColorDrawable(0xff0000ff);
ColorDrawable f13 = new ColorDrawable(0xff8b00ff);
AnimationDrawable a = new AnimationDrawable();
a.addFrame(f, DELAY);
a.addFrame(f2, DELAY);
a.addFrame(f3, DELAY);
a.addFrame(f4, DELAY);
a.addFrame(f5, DELAY);
a.addFrame(f6, DELAY);
a.addFrame(f7, DELAY);
a.addFrame(f8, DELAY);
a.addFrame(f9, DELAY);
a.addFrame(f10, DELAY);
a.addFrame(f11, DELAY);
a.addFrame(f12, DELAY);
a.addFrame(f13, DELAY);
a.setOneShot(false);
psirenlayout.setBackgroundDrawable(a); // is deprecated API 16
//psirenlayout.setBackground(a); // API 16
a.start();
}
return true;
}
});
}
private void playSound(){
mp = MediaPlayer.create(disco.this, R.raw.disco);
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
mp.setLooping(true);
mp.start();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
mp.stop();
finish();
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onPause() {
super.onDestroy();
}
@Override
protected void onDestroy() {
mp.stop();
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.mymenu, menu);
return true;
}
}
我尝试了一切都在停止销毁!我一直收到这个错误在我强制关闭程序后,dosent 关闭它返回到 mainActivity,这很奇怪。
25 15:29:49.543: E/AndroidRuntime(11154): FATAL EXCEPTION: main 05-25 15:29:49.543: E/AndroidRuntime(11154): java.lang.NullPointerException 05-25 15:29:49.543: E/AndroidRuntime(11154): at com.soheil.prolight.disco.onKeyDown(disco.java:120) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.view.KeyEvent.dispatch(KeyEvent.java:2609) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.app.Activity.dispatchKeyEvent(Activity.java:2375) 05-25 15:29:49.543: E/AndroidRuntime(11154): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1847) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3701) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3651) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2818) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.os.Handler.dispatchMessage(Handler.java:99) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.os.Looper.loop(Looper.java:137) 05-25 15:29:49.543: E/AndroidRuntime(11154): at android.app.ActivityThread.main(ActivityThread.java:5041) 05-25 15:29:49.543: E/AndroidRuntime(11154): at java.lang.reflect.Method.invokeNative(Native Method) 05-25 15:29:49.543: E/AndroidRuntime(11154): at java.lang.reflect.Method.invoke(Method.java:511) 05-25 15:29:49.543: E/AndroidRuntime(11154): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 05-25 15:29:49.543: E/AndroidRuntime(11154): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
最佳答案
在 onDestroy()
方法的 mp.stop();
周围放置一个 if(mp != null) { }
。您可能会在 MediaPlayer 尚未初始化时尝试将其停止。
然后 onDestroy() 方法变为:
@Override
protected void onDestroy() {
if(mp != null) {
mp.stop();
}
super.onDestroy();
}
关于android - onDestroy() 的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16752803/
我创建了一个窗口,并在某个时候调用了 OnDestroy(),而用户从未单击关闭窗口的“关闭”或“X”按钮。 还有哪些其他操作/ Action /事物可能导致调用此函数,为什么? Microsoft
这是我的部分代码: package com.admobsdk_dfp_handler; import com.google.ads.*; import com.google.ads.doublecli
覆盖 Activity 的 ondestroy 时,我应该在 super.onDestroy() 之前或之后放置命令吗? protected void onDestroy() { //opti
我用 onDestroy()方法,我的代码没有完成: @Override public void onDestroy() { super.onDestroy();
我的代码:(用于耳机控制和更改音量) @Override public void onResume() { headSetConn=new HeadSetBCast(); regist
我正在阅读 Activity 生命周期,并阅读有关启动和销毁 Activity 的文档,链接如下: http://developer.android.com/training/basics/activ
我目前正在构建一个 Android 应用程序,它将用作防盗类应用程序。基本上,一旦警报发出,应用程序将监控加速度计以检测运动。如果是,用户将有 15 秒的时间输入设置的密码来停用警报,否则:BIIII
我在检测应用程序何时完成时遇到了一些问题。我需要在 Destroy 上执行一些操作,例如将参数保存到数据库中并最终连接到服务器。 问题是,如果我将代码放在 onDestroy 中,例如,当方向发生变化
我知道在 Android 中,您不会得到有保证的 Activity 的 onDestroy() 调用。我的问题是在哪些情况下不调用 onDestroy()? 最佳答案 假设有两个 Activity A
当我的 Activity 由于内存而被操作系统破坏时(例如,当一个电话打断它时),然后当我的 Activity 试图再次启动时,它不会返回任何预期的回调,除了 onDestroy(),我怎样才能再次恢
我无法理解 onDestroy() 的行为。我的问题是:是否有可能在不杀死 hole 应用程序的情况下不调用 onDestroy() 就杀死一个 Activity ?我的意思是,我会不会回到我的应用程
我希望当我点击手机上的后退按钮时关闭当前 Activity 并返回菜单并停止媒体播放器 但我收到错误消息:不幸的是武器已停止!单击后退按钮 那么如何解决呢? public class pushke e
我开始在我看过的两个视频类(class)中学习 android 开发,我读过的一本书说 onDestroy() 是操作系统在感觉释放内存时调用的。甚至没有人提到它会在用户关闭应用程序时被调用。这让我怀
我已经学会了如何发送推送通知,效果很好,但即使在应用程序关闭后我也需要向用户发送通知。到目前为止,我知道如何在应用程序运行时发送它。在 Android 上,当应用程序处于后台或什至关闭时,您如何发送通
为什么后桶会在父级上调用 onDestroy()? 我有以下场景: Activity A 通过 intent 打开 Activity B Intent intent = new Intent(pare
我试图在我的 OnDestroy () 中调用一个服务,但是日志都不起作用,有人知道为什么吗? @Override protected void onDestroy() { Log.e("on
嗨,这是我的代码,我试图做的是在我触摸开始出现的屏幕可绘制对象后,首先在背景 (touch2) 中出现一张图片。那么问题出在哪里呢? 问题是在我触摸屏幕之前,当我看到 touch2 图像时,如果我按下
每当我的 Activity 被终止时,我都会尝试执行一些代码,但是当它只是简单地移到后台时不会(所以只在 onPause() 中调用它不是解决方案),并且我了解不能保证调用 onDestory()。我
我要打电话 onDestroy() android 中的服务方法。 我已经在互联网上搜索了很多,很多答案都是 if 服务强制停止或以某种方式它的 onDestroy() 永远不会调用。 但我真的需要知
我正在阅读“开始 Android 4 开发”这本书,并且我正在使用按钮中的以下功能控制服务: public void startService(View view) { startServic
我是一名优秀的程序员,十分优秀!