2016-11-03 3 views
0
public class PhrasesActivity extends AppCompatActivity { 
    MediaPlayer mediaPlayer; 
    private MediaPlayer.OnCompletionListener onCompletionListener = new MediaPlayer.OnCompletionListener(){ 
     @Override 
     public void onCompletion(MediaPlayer mediaPlayer) { 
      releaseMediaPlayer(); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.word_list); 

     final ArrayList<Word> words = new ArrayList<Word>(); 

#some Word elements added 
     WordAdapter wordAdapter = new WordAdapter(this, words, R.color.category_phrases); 
     ListView listView = (ListView)findViewById(R.id.numberlist); 
     listView.setAdapter(wordAdapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       Toast.makeText(PhrasesActivity.this, "Demo", Toast.LENGTH_SHORT).show(); 
       Word word = words.get(i); 
       releaseMediaPlayer(); 
       mediaPlayer = MediaPlayer.create(PhrasesActivity.this, word.getAudioResourceID()); 
       mediaPlayer.start(); 
       mediaPlayer.setOnCompletionListener(onCompletionListener); 
      } 
     }); 
    } 

@Override 
protected void onPause() { 
    super.onPause(); 
    Log.v("PhrasesActivity", "onPause: Paused"); 
    releaseMediaPlayer(); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    Log.v("PhrasesActivity", "onPause: Stopped"); 
    releaseMediaPlayer(); 
} 

    private void releaseMediaPlayer(){ 
     if(mediaPlayer!= null){ 
      mediaPlayer.release(); 
      mediaPlayer= null; 
     } 
    } 
} 

このコードは、私のアプリの子アクティビティでは機能しません。 私はLog.v()でログをチェックしようとしましたが、何も起こっていません。ログは作成されません。 EDIT - onPause()メソッドのみを使用しようとしました。それは私が問題を解決するのにも役に立たなかった。onPause()とonStop()が動作しない

+0

*サブアクティビティ*とは?また、これらのメソッドを@ @オーバーライドしませんでした –

+0

私は子供の活動を意味しました。私はコマンド(Windows PC上のAndroidスタジオではControl + o)を使用しました。これをどうすれば解決できますか? – IAmSurajBobade

+1

あなたはどのように/何が起こっているかを見ることができるようにクラス全体を投稿できますか? – apelsoczi

答えて

2

エラーを拡張していることを確認する必要があります)(super.onStopを呼び出す前に必要な命令文を使用して、一連のです/super.onPause();

@Override 
protected void onPause() { 
    // super.onPause(); 
    Log.v("PhrasesActivity", "onPause: Paused"); 
    releaseMediaPlayer(); 
    super.onPause(); 
} 

@Override 
protected void onStop() { 
    // super.onStop(); 
    Log.v("PhrasesActivity", "onPause: Stopped"); 
    releaseMediaPlayer(); 
    super.onStop(); 
} 

一般に、Javaでは最初にsuper()を呼び出します。オーバーライドされたメソッドで処理し、さらにコードを書くことができます。 私はここでそれが続くわけではありませんでしたが、上記のコードを変更することで問題を解決するのに役立ちました。

Mohammed Atifに助けてくれてありがとう!

-1

あなたがオーバーライドタグを追加し、コード内での活動に

public class MyActivity extends Activity { 
    @Override 
    protected void onPause(){ 
    super.onPause(); 
    #Some code 
    } 

    @Override 
    protected void onStop(){ 
    super.onStop(); 
    #Some code 
    } 
} 
+0

これは間違っています。オーバーライドするメソッドに注釈を付ける必要はありません。 –

+0

必要性を修正する必要はありませんが、スタックオーバーフローでは常に優良事例を促進します。詳細については、http://stackoverflow.com/a/94411/1492034を参照してください。 – LordSidious

+0

良い習慣かもしれませんが、これは問題に答えることも解決しません。 –

関連する問題