2016-08-10 15 views
0

Androidアプリを実行しているときに別のコード行にジャンプする方法を知りたい。Androidアプリの実行中に別のコード行に移動する方法

これは私の問題です。

まずは、ここに私のコードです: - 。実行があればonCompletion()メソッドに入るたび

listView.setOnItemClickListener 

      (new AdapterView.OnItemClickListener() { 

       @Override 

       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 







         int Current_Song; 

         Songs song = Song.get(i); 



         //If mediaPlayer is not used before, this will make oldsong as present song. 

         if (Old_Song == -326523) { 

          Old_Song = song.getSong(); 

         } 



         Current_Song = song.getSong(); 



         ImageView IVP_P = (ImageView) findViewById(R.id.P_PImage); 





         //If mediaPlayer is paused. 

         if (IsPaused) { 

          P_and_P.setImageResource(R.drawable.ic_pause_white_48dp); 

          //If the song paused is same as the new song. 

          if (Current_Song == Old_Song) { 



           mediaplayer.start(); 

          } 



          //If the song Paused is not the new song. 

          else { 

           if (mediaplayer != null) { 

            mediaplayer.release(); 

            mediaplayer = null; 

           } 



           int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); 



           if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 

            mediaplayer = mediaplayer.create(SongsListActivity.this, song.getSong()); 

            Old_Song = song.getSong(); 

            NameD.setText(song.getNameOfSong()); 

            RateD.setText(song.getDeveloperRate()); 

            ImageD.setImageResource(song.getImage()); 

            mediaplayer.start(); 

            mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

             @Override 

             public void onCompletion(MediaPlayer mediaPlayer) { 

              P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp); 

              IsPaused = true; 

             } 

            }); 

           } 

          } 

          IsPaused = false; 



         } else if (mediaplayer != null) { 

          //If mediaPlayer is already Playing a song. 

          if (mediaplayer.isPlaying()) { 

           P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp); 

           mediaplayer.pause(); 

           IVP_P.setImageResource(R.drawable.ic_play_arrow_black_24dp); 

           IsPaused = true; 

          } 

         } 



         //If mediaPlayer is used for first time and if mediaPlayer is neither paused 

         else { 



          if (mediaplayer != null) { 

           mediaplayer.release(); 

           mediaplayer = null; 

          } 



          int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); 



          if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 

           mediaplayer = mediaplayer.create(SongsListActivity.this, song.getSong()); 

           Old_Song = song.getSong(); 

           NameD.setText(song.getNameOfSong()); 

           RateD.setText(song.getDeveloperRate()); 

           ImageD.setImageResource(song.getImage()); 

           mediaplayer.start(); 

           P_and_P.setImageResource(R.drawable.ic_pause_white_48dp); 



           mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

            @Override 

            public void onCompletion(MediaPlayer mediaPlayer) { 

             P_and_P.setImageResource(R.drawable.ic_play_arrow_white_48dp); 

             IsPaused = true; 

             P_and_P.setImageResource(R.drawable.ic_pause_white_48dp); 



            } 

           }); 

          } 

         } 



        } 



      } 

      ); 

は、私はonItemClick()メソッドの最初から実行を開始するために実行したいしたいです。

どうすればよいですか?より詳しいことについては

: -

ここに私のアプリは、ListViewコントロールとアダプタを使用した曲のリストが表示されます。ソングの詳細は、ArrayList(すべて参照可能)で保存されます。アイテムがクリックされると、そのアイテムの位置が取得され、arrayListの対応する要素を参照して、対応するソングの位置が取得され、その曲を演奏する。私が欲しいのは、曲が終わってメソッドonCompletion()が呼び出されたとき、私は値の値を増やして(コードの4行目を参照)、それからonItemClickの最初の行に行きたい方法。

+0

あなたはアイテムをクリックする必要があります:) – Kaushal28

+0

私はアイテムをクリックしてそれをしたくない、私はエグゼキュータが自動的に始めに行くようにしたい。 gotoとラベルがどうなるか –

答えて

0

あなたが言っていることはGOTOと呼ばれ、広く悪いデザインとみなされています。代わりに、メソッドに呼び出すコードを抽出し、そのコードを実行したい場所(両方)から呼び出します。

+0

私はgotoの使用は非常に悪いアプローチだと知っていますが、私の場合、gotoはその方法をより良い方法で実行します。どうすればいいのですか?お願いします! –

+1

https://www.google.com.au/search?q=java+goto+how+toを試してください 基本的に、ラベル: 'label:'を宣言してから、後でgotoキーワードを使用します: 'goto label; '。あなたのスパゲッティコードを楽しみましょう! 編集:明確にするために、GOTOの使用について考える前に、デザイン全体を変更することをお勧めします。 –

+0

gotoキーワードはJava – Kaushal28

関連する問題