Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
fu11noob
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 14
#1

Ошибка при при смене активити - Android

08.06.2015, 17:46. Просмотров 319. Ответов 7
Метки нет (Все метки)

Была проблема с проигрыванием музыки при сворачивании приложения, я решил ее методом ниже
Java
1
2
3
4
5
6
7
 @Override
    protected void onStop()
    {
        if(mp.isPlaying()){mp.stop();}
        else if(mp1.isPlaying()){mp1.stop();}
        super.onStop();
    }
теперь музыка не играет при сворачивании приложения, но при возврате на активити, где используется этот метод
вылетает ошибка, указывающая на 1е или 2е условие. Что собственно не так?
Кликните здесь для просмотра всего текста

06-08 10:32:31.004: E/AndroidRuntime(1187): java.lang.RuntimeException: Unable to stop activity {com.itmhnadu.viktorina/com.itmhnadu.viktorina.MainActivity}: java.lang.NullPointerException
06-08 10:32:31.004: E/AndroidRuntime(1187): Caused by: java.lang.NullPointerException
06-08 10:32:31.004: E/AndroidRuntime(1187): at com.itmhnadu.viktorina.MainActivity.onStop(MainActivity.java:464)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.06.2015, 19:11     Ошибка при при смене активити #2
fu11noob, непонятно, почему два проигрывателя, когда обычно один. Что у вас написано в onResume, onCreate или onStart?
fu11noob
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 14
09.06.2015, 20:08  [ТС]     Ошибка при при смене активити #3
1й раз работаю с проигрывателями, поэтому и 2.
Java
1
2
3
4
5
6
7
8
  @Override
    protected void onResume()
    {
        if(a1>=0 && a1<=4){mp.reset();mp=MediaPlayer.create(MainActivity.this, R.raw.q1_5fon);mp.setLooping(true);mp.start();}
        else if(a1>4 && a1<=9){mp.reset();mp=MediaPlayer.create(MainActivity.this, R.raw.q6_10fon);mp.setLooping(true);mp.start();}
        else if(a1>9 && a1<=14){mp.reset();mp=MediaPlayer.create(MainActivity.this, R.raw.q11_15fon);mp.setLooping(true);mp.start();}
        super.onResume();
    }
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.activity_main);     
        Intent intent= getIntent();     
        r=intent.getIntExtra("fifty",n);        
        textView1=(TextView)findViewById(R.id.textView1);   
        textview[0]=(TextView)findViewById(R.id.textView2);
        textview[1]=(TextView)findViewById(R.id.textView3);
        textview[2]=(TextView)findViewById(R.id.textView4);
        textview[3]=(TextView)findViewById(R.id.textView5);
        textview[4]=(TextView)findViewById(R.id.textView6);
        textview[5]=(TextView)findViewById(R.id.textView7);
        textview[6]=(TextView)findViewById(R.id.textView8);
        textview[7]=(TextView)findViewById(R.id.textView9);
        textview[8]=(TextView)findViewById(R.id.textView10);
        textview[9]=(TextView)findViewById(R.id.textView11);
        textview[10]=(TextView)findViewById(R.id.textView12);
        textview[11]=(TextView)findViewById(R.id.textView13);
        textview[12]=(TextView)findViewById(R.id.textView14);
        textview[13]=(TextView)findViewById(R.id.textView15);
        textview[14]=(TextView)findViewById(R.id.textView16);       
        textView19=(TextView)findViewById(R.id.textView19); 
        button[0]=(Button)findViewById(R.id.button1);
        button[1]=(Button)findViewById(R.id.button2);
        button[2]=(Button)findViewById(R.id.button3);
        button[3]=(Button)findViewById(R.id.button4);
        button[4]=(Button)findViewById(R.id.button5);
        button[5]=(Button)findViewById(R.id.button6);
        button[6]=(Button)findViewById(R.id.button7);
        button8=(Button)findViewById(R.id.button8);             
        button8.setOnClickListener(this);
        for(int i=0;i<button.length;i++)
        {
            button[i].setOnClickListener(this);
        }       
        textView1.setTextColor(Color.WHITE);
        textView19.setTextColor(Color.TRANSPARENT);     
        openFile(FILENAME);
        if(a1>=0 && a1<=4){mp=MediaPlayer.create(MainActivity.this, R.raw.q1_5fon);mp.setLooping(true);mp.start();}
        else if(a1>4 && a1<=9){mp=MediaPlayer.create(MainActivity.this, R.raw.q6_10fon);mp.setLooping(true);mp.start();}
        else if(a1>9 && a1<=14){mp=MediaPlayer.create(MainActivity.this, R.raw.q11_15fon);mp.setLooping(true);mp.start();}

собственно mp1 у меня играет в некотором промежутке времени(пару секунд) когда mp на паузе
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 826
09.06.2015, 21:00     Ошибка при при смене активити #4
fu11noob,
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.06.2015, 21:35     Ошибка при при смене активити #5
fu11noob, спасибо , под столом
А где инициализация mp1?
fu11noob
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 14
09.06.2015, 21:39  [ТС]     Ошибка при при смене активити #6
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  void fiftysound()
    {
        mp.pause();
        mp1=MediaPlayer.create(MainActivity.this, R.raw.x5050);
        Log.d(TAG,""+mp1.getDuration());
        timer=new CountDownTimer(mp1.getDuration(), 1) 
     {    
        @Override
        public void onTick(long millisUntilFinished) 
        {
            mp1.start();
        }
        public void onFinish() 
        {  
            mp1.pause();
            mp.start();
        }           
     }.start();
    }
я понимаю что смешно и т.д
но по существу может ли эта проблема быть из-за наличия 2го проигрывателя?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.06.2015, 21:52     Ошибка при при смене активити #7
fu11noob, честно говоря, не знаю. Не пробовал использовать 2 проигрывателя да и примеров таких не встречал. Может быть, так и можно, но не нужно. По идее, достаточно одного проигрывателя, на вход которому подаётся источник аудиоданных. Вы звук берёте из ресурсов программы? Я пока делал только с URL, но в вашем случае должно быть проще. Если вам надо будет переключаться между композициями, надо будет запоминать положение проигрывателя (в миллисекундах) и потом его восстанавливать для каждой композиции.

Добавлено через 2 минуты
Если умеете работать с Debug, попробуйте запустить отладку.
Кстати, что у вас написано в строке MainActivity.java:464? Я так понял, там один из объектов == null.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2015, 22:02     Ошибка при при смене активити
Еще ссылки по теме:

Android Handler при пересоздании активити
Что за магия при смене языка? Android
Сохранение данных при пересоздании активити Android
Android Сохранение набранного в EditText текста при смене активити
Ошибка при смене toolbar Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fu11noob
0 / 0 / 0
Регистрация: 20.04.2014
Сообщений: 14
09.06.2015, 22:02  [ТС]     Ошибка при при смене активити #8
Да, из ресурсов.
Спасибо, буду разбираться.
За комментарии по поводу 2х проигрывателей отдельное спасибо, учту на будущее что нужно использовать 1.
464(465) строка это одно из условий
Java
1
2
if(mp.isPlaying()){mp.stop();}
else if(mp1.isPlaying()){mp1.stop();}
Yandex
Объявления
09.06.2015, 22:02     Ошибка при при смене активити
Ответ Создать тему
Опции темы

Текущее время: 11:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru