Hello, I have a fragment:

screen 1

I click on the play starts to play the radio, then I go to the tab home and my radio does not stop:

screen2

How to make it so that when you press home to stop?

 playPause.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mediaPlayer == null){ mediaPlayer = new MediaPlayer(); Toast.makeText(getActivity(), "Идет подключение к радиостанции", Toast.LENGTH_LONG).show(); try { mediaPlayer.reset(); mediaPlayer.setDataSource(STREAM_URL); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); } }); } catch (IOException e) { e.printStackTrace(); Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show(); } } else if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); } else { mediaPlayer.start(); } //Toast.makeText(getActivity(), "Идет подключение к радиостанции..", Toast.LENGTH_LONG).show(); } }); registerForContextMenu(playPause); 

Main Activity`public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, DrawerLayout.DrawerListener {

 NavigationView navigationView = null; Toolbar toolbar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); MainFragment fragment = new MainFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, fragment); fragmentTransaction.commit(); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.addDrawerListener(toggle); toggle.syncState(); navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_home) { MainFragment fragment = new MainFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, fragment); fragmentTransaction.commit(); } else if (id == R.id.nav_priboy) { GalleryFragment fragment = new GalleryFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, fragment); fragmentTransaction.commit(); } else if (id == R.id.nav_assa) { AsaFragment fragment = new AsaFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, fragment); fragmentTransaction.commit(); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } @Override public void onDrawerSlide(View drawerView, float slideOffset) { } @Override public void onDrawerOpened(View drawerView) { } @Override public void onDrawerClosed(View drawerView) { } @Override public void onDrawerStateChanged(int newState) { } 

} `

  • How do you play the radio? Show the code. - post_zeew
  • Made a correction , now there is a code - Bulat Gusmanov

2 answers 2

Handle the home button. And already there stop playback.

 @Override protected void onUserLeaveHint() { Toast toast = Toast.makeText(getApplicationContext(), "Нажата кнопка HOME", Toast.LENGTH_SHORT); toast.show(); super.onUserLeaveHint(); } 
  • the fact is that my radio plays in Fragment and the home button is implemented in the navigation drawer, that is, in the Main activity - Bulat Gusmanov

DrawerLayout can set the listener DrawerLayout.DrawerListener DrawerLayout DrawerLayout.DrawerListener

 DrawerLayout drwLayout = (DrawerLayout) findViewById(R.id.DrawerLayout); drwLayout.addDrawerListener(new MyListener()); 

Class MyListener :

 public class MyListener implements DrawerLayout.DrawerListener { @Override public void onDrawerSlide(View drawerView, float slideOffset) { } @Override public void onDrawerOpened(View drawerView) { // Здесь остановить плеер } @Override public void onDrawerClosed(View drawerView) { } @Override public void onDrawerStateChanged(int newState) { } } 
  • In this case, the radio will stop playing at the moment when the menu is open. - post_zeew
  • is it necessary to write in the main activity? - Bulat Gusmanov
  • I threw off the main Activity, if you could see it? - Bulat Gusmanov