Привет, вот мой код, что я пытался сделать, это сначала одно изображение появляется в фоновом режиме (touch2) после того, как я коснусь экрана, которые начинают появляться. Итак, где проблема?Исключительное исключение указателя в onDestroy()
Проблема заключается в том, что перед тем, как коснуться экрана, и когда я увижу изображение touch2, если я нажму кнопку «Назад», я получу силу и ошибку в лог-коте, которая говорит, что активность не может уничтожить из-за нулевого указателя. Вот мой код
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: Е/AndroidRuntime (11154): неустранимые: Основной 05-25 15: 29: 49,543: Е/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): у 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 (1115) 4): 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): в java. lang.reflect.Method.invokeNative (родной метод) 05-25 15: 29: 49.543: E/AndroidRuntime (11154): в 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: Е/AndroidRuntime (11154): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560)
вы должны остановить t он mediaplayer в onPause(). if (mp! = null) {mp.stop(); } mp.stop() ;. in onDestory(). – Raghunandan
теперь я получаю эту ошибку <05-25 15:41:28.203: E/AndroidRuntime (11542): FATAL EXCEPTION: main 05-25 15: 41: 28.203: E/AndroidRuntime (11542): android.app.SuperNotCalledException: Activity {com.soheil.prolight/com.soheil.prolight. disco} не звонил в super.onDestroy() – Soheyl
tnx mate его исправлено: D – Soheyl