Как передать более одного аргумента? - PullRequest
0 голосов
/ 02 октября 2018

Я работаю на Android Studio 3.1.3.
Мое приложение состоит из восьми кнопок.Я пытаюсь передать более одной кнопки в качестве аргументов из метода onClick

public void onClick(View v) {

    switch (v.getId()){

        case R.id.button:
            pauseAudio(audioTwo, audioThree, audioFour, audioFive, audioSix, audioSeven, audioEight);
            mediaPlayer = MediaPlayer.create(this,R.raw.birds);
            mediaPlayer.start();
            break;

методу pauseAudio,

public void pauseAudio(View view, Button audioOne, Button audioTwo, Button audioThree, Button audioFour, Button audioFive, Button audioSix, Button audioSeven, Button audioEight){

        if(audioOne.isEnabled()
                || audioTwo.isEnabled()
                || audioThree.isEnabled()
                || audioFour.isEnabled()
                || audioFive.isEnabled()
                || audioSix.isEnabled()
                || audioSeven.isEnabled()
                || audioEight.isEnabled()){
            if(mediaPlayer.isPlaying() && mediaPlayer!=null){
                mediaPlayer.stop();
            }
        }

    }

, это ошибка, которая отображается при наведении курсора на подчеркнутый текст this is error it is showing when I hover over the underlined text
Я предполагаю, что способ, которым я передаю аргумент, не является правильным, поэтому, пожалуйста, помогите мне.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Чтобы сделать ваш код проще и, надеюсь, работать, попробуйте это:

public void pauseAudio(View... views) {
    for(View view : views) {
        if(view.isEnabled()) {
            if(mediaPlayer!=null && mediaPlayer.isPlaying()){
                mediaPlayer.stop();
            }
            break;
        }
    }
}

Теперь вы можете назвать его так:

pauseAudio(audioOne, audioTwo, audioThree, ...);

РЕДАКТИРОВАТЬ:

Может также проверить, не инициализировано ли представление:

if(view != null && view.isEnabled())

РЕДАКТИРОВАТЬ 2:

Я рад слышать, что это сработало :)Вот лучшее объяснение:

public void pauseAudio(View... views) { //Allow a dynamic initialization of an array of Views
    for(View view : views) { //Loop through the array
        if(view != null && view.isEnabled()) { //If the current view is not null and enabled
            if(mediaPlayer!=null && mediaPlayer.isPlaying()){ //If the MediaPlayer is not null and playing
                mediaPlayer.stop(); //Stop the MediaPlayer
            }
            break; //Break the loop, as we have reached our usecase
        }
    }
}
0 голосов
/ 02 октября 2018

Может быть, если вы опубликуете журнал после сбоя, мы могли бы помочь вам лучше.но я уже вижу элемент управления, который может дать сбой

  if (mediaPlayer.isPlaying () && mediaPlayer! = null) {
            mediaPlayer.stop ();
        }

.Вы могли бы сначала проверить, если MediaPlayer!= null перед mediaPlayer.isPlaying () примерно так:

   if (mediaPlayer! = null && mediaPlayer.isPlaying ()) {
            mediaPlayer.stop ();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...