Hello, I have a button that stops broadcasting. The problem itself is this - I click on play (starts playing the radio), press stop - it stops (everything is fine), then for example I accidentally clicked on a stop, then the code for the stop button flies out of the application

public class AsaFragment extends Fragment { private static final String LOG_TAG = "myLog"; private List<Item> itemList = new ArrayList<>(); private RecyclerView recyclerView; private ToggleButton playPause; private ToggleButton stopButton; //private ToggleButton startButton; private MyAdapter myAdapter; private MediaPlayer mediaPlayer; private String STREAM_URL = "http://stream3.radiostyle.ru:8003/radioacca"; public AsaFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_asa, container, false); recyclerView = (RecyclerView)view.findViewById(R.id.recycler_view1); myAdapter = new MyAdapter(itemList); //myAdapter.setClickListener(this); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(mLayoutManager); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(myAdapter); prepareItem(); playPause = (ToggleButton)view.findViewById(R.id.playpause1); stopButton = (ToggleButton)view.findViewById(R.id.stopButton1); //startButton = (ToggleButton)view.findViewById(R.id.play1); 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); stopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); playPause.setChecked(false); } else { playPause.setChecked(true); } } }); playPause.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (compoundButton.getId() == playPause.getId() && b){ playPause.setBackgroundResource(R.drawable.toggle_playback); } } }); registerForContextMenu(stopButton); return view; } public void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState); playPause.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if (compoundButton.getId() == playPause.getId() && b){ playPause.setChecked(true); } } }); } public void onStart() { super.onStart(); Log.d(LOG_TAG, "Fragment1 onStart"); } public void onResume() { super.onResume(); Log.d(LOG_TAG, "Fragment1 onResume"); } public void onPause() { super.onPause(); Log.d(LOG_TAG, "Fragment1 onPause"); } public void onStop() { super.onStop(); if(canStop()){ mediaPlayer.stop(); } Log.d(LOG_TAG, "Fragment1 onStop"); } public void onDestroyView() { super.onDestroyView(); Log.d(LOG_TAG, "Fragment1 onDestroyView"); } public void onDestroy() { super.onDestroy(); Log.d(LOG_TAG, "Fragment1 onDestroy"); } public void onDetach() { super.onDetach(); Log.d(LOG_TAG, "Fragment1 onDetach"); } private void prepareItem() { Item item = new Item(R.drawable.assa,"Радио Асса", "104,8 FM"); itemList.add(item); } boolean canStop() { if(mediaPlayer == null) { return false; } return mediaPlayer.isPlaying(); } } 
  • Show the stack trace and the whole class in which the above method is located. - post_zeew
  • sent class code - Bulat Gusmanov

1 answer 1

Check if it is possible to checkbox check

 stopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); if (playPause.isChecked){ playPause.setChecked(false); } } else { if (!playPause.isChecked) { playPause.setChecked(true); } } } });