Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to get Context from SherlockFragment and start Activity
    primarykey
    data
    text
    <p>Im using swipable tabs actionbar Sherlock and In one of my tabs I have it pointed to an xml file for its content.... there is a button "btnPlaylist" which is supposed to open a new activity/intent but the highlighted error is on "context" saying it cannot be resolved into a variable.</p> <p>heres the code</p> <pre><code>public class Playback extends SherlockFragment implements OnCompletionListener, SeekBar.OnSeekBarChangeListener { private ImageButton btnPlay; private ImageButton btnForward; private ImageButton btnBackward; private ImageButton btnNext; private ImageButton btnPlaylist; private ImageButton btnPrevious; private ImageButton btnRepeat; private ImageButton btnShuffle; private SeekBar songProgressBar; private TextView songTitleLabel; private TextView songCurrentDurationLabel; private TextView songTotalDurationLabel; // Media Player private MediaPlayer mp; // Handler to update UI timer, progress bar etc,. private Handler mHandler = new Handler();; private SongsManager songManager; private Utilities utils; private int seekForwardTime = 5000; // 5000 milliseconds private int seekBackwardTime = 5000; // 5000 milliseconds private int currentSongIndex = 0; private boolean isShuffle = false; private boolean isRepeat = false; private ArrayList&lt;HashMap&lt;String, String&gt;&gt; songsList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); @Override public SherlockFragmentActivity getSherlockActivity() { return super.getSherlockActivity(); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.player, container, false); btnPlay = (ImageButton) view.findViewById(R.id.btnPlay); btnForward = (ImageButton) view.findViewById(R.id.btnForward); btnBackward = (ImageButton) view.findViewById(R.id.btnBackward); btnNext = (ImageButton) view.findViewById(R.id.btnNext); btnPrevious = (ImageButton) view.findViewById(R.id.btnPrevious); btnPlaylist = (ImageButton) view.findViewById(R.id.btnPlaylist); btnRepeat = (ImageButton) view.findViewById(R.id.btnRepeat); btnShuffle = (ImageButton) view.findViewById(R.id.btnShuffle); songProgressBar = (SeekBar) view.findViewById(R.id.songProgressBar); songTitleLabel = (TextView) view.findViewById(R.id.songTitle); songCurrentDurationLabel = (TextView) view.findViewById(R.id.songCurrentDurationLabel); songTotalDurationLabel = (TextView) view.findViewById(R.id.songTotalDurationLabel); mp = new MediaPlayer(); songManager = new SongsManager(); utils = new Utilities(); // Listeners songProgressBar.setOnSeekBarChangeListener(this); // Important mp.setOnCompletionListener(this); // Important // Getting all songs list songsList = songManager.getPlayList(); // By default play first song playSong(0); /** * Play button click event * plays a song and changes button to pause image * pauses a song and changes button to play image * */ btnPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // check for already playing if(mp.isPlaying()){ if(mp!=null){ mp.pause(); // Changing button image to play button btnPlay.setImageResource(R.drawable.btn_play); } }else{ // Resume song if(mp!=null){ mp.start(); // Changing button image to pause button btnPlay.setImageResource(R.drawable.btn_pause); } } } }); /** * Forward button click event * Forwards song specified seconds * */ btnForward.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // get current song position int currentPosition = mp.getCurrentPosition(); // check if seekForward time is lesser than song duration if(currentPosition + seekForwardTime &lt;= mp.getDuration()){ // forward song mp.seekTo(currentPosition + seekForwardTime); }else{ // forward to end position mp.seekTo(mp.getDuration()); } } }); /** * Backward button click event * Backward song to specified seconds * */ btnBackward.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // get current song position int currentPosition = mp.getCurrentPosition(); // check if seekBackward time is greater than 0 sec if(currentPosition - seekBackwardTime &gt;= 0){ // forward song mp.seekTo(currentPosition - seekBackwardTime); }else{ // backward to starting position mp.seekTo(0); } } }); /** * Next button click event * Plays next song by taking currentSongIndex + 1 * */ btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // check if next song is there or not if(currentSongIndex &lt; (songsList.size() - 1)){ playSong(currentSongIndex + 1); currentSongIndex = currentSongIndex + 1; }else{ // play first song playSong(0); currentSongIndex = 0; } } }); /** * Back button click event * Plays previous song by currentSongIndex - 1 * */ btnPrevious.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if(currentSongIndex &gt; 0){ playSong(currentSongIndex - 1); currentSongIndex = currentSongIndex - 1; }else{ // play last song playSong(songsList.size() - 1); currentSongIndex = songsList.size() - 1; } } }); /** * Button Click event for Repeat button * Enables repeat flag to true * */ btnRepeat.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(isRepeat){ isRepeat = false; //Toast.makeText(this, "Repeat is OFF", Toast.LENGTH_SHORT).show(); btnRepeat.setImageResource(R.drawable.btn_repeat); }else{ // make repeat to true isRepeat = true; //Toast.makeText(getApplicationContext(), "Repeat is ON", Toast.LENGTH_SHORT).show(); // make shuffle to false isShuffle = false; btnRepeat.setImageResource(R.drawable.btn_repeat_focused); btnShuffle.setImageResource(R.drawable.btn_shuffle); } } }); /** * Button Click event for Shuffle button * Enables shuffle flag to true * */ btnShuffle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if(isShuffle){ isShuffle = false; //Toast.makeText(getApplicationContext(), "Shuffle is OFF", Toast.LENGTH_SHORT).show(); btnShuffle.setImageResource(R.drawable.btn_shuffle); }else{ // make repeat to true isShuffle= true; //Toast.makeText(getApplicationContext(), "Shuffle is ON", Toast.LENGTH_SHORT).show(); // make shuffle to false isRepeat = false; btnShuffle.setImageResource(R.drawable.btn_shuffle_focused); btnRepeat.setImageResource(R.drawable.btn_repeat); } } }); /** * Button Click event for Play list click event * Launches list activity which displays list of songs * */ btnPlaylist.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent i = new Intent(context, PlayListActivity.class); } }); return view; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); setUserVisibleHint(true); } /** * Receiving song index from playlist view * and play the song * */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode == 100){ currentSongIndex = data.getExtras().getInt("songIndex"); // play selected song playSong(currentSongIndex); } } /** * Function to play a song * @param songIndex - index of song * */ public void playSong(int songIndex){ // Play song try { mp.reset(); mp.setDataSource(songsList.get(songIndex).get("songPath")); mp.prepare(); mp.start(); // Displaying Song title String songTitle = songsList.get(songIndex).get("songTitle"); songTitleLabel.setText(songTitle); // Changing Button Image to pause image btnPlay.setImageResource(R.drawable.btn_pause); // set Progress bar values songProgressBar.setProgress(0); songProgressBar.setMax(100); // Updating progress bar updateProgressBar(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * Update timer on seekbar * */ public void updateProgressBar() { mHandler.postDelayed(mUpdateTimeTask, 100); } /** * Background Runnable thread * */ private Runnable mUpdateTimeTask = new Runnable() { public void run() { long totalDuration = mp.getDuration(); long currentDuration = mp.getCurrentPosition(); // Displaying Total Duration time songTotalDurationLabel.setText(""+utils.milliSecondsToTimer(totalDuration)); // Displaying time completed playing songCurrentDurationLabel.setText(""+utils.milliSecondsToTimer(currentDuration)); // Updating progress bar int progress = (int)(utils.getProgressPercentage(currentDuration, totalDuration)); //Log.d("Progress", ""+progress); songProgressBar.setProgress(progress); // Running this thread after 100 milliseconds mHandler.postDelayed(this, 100); } }; /** * * */ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { } /** * When user starts moving the progress handler * */ @Override public void onStartTrackingTouch(SeekBar seekBar) { // remove message Handler from updating progress bar mHandler.removeCallbacks(mUpdateTimeTask); } /** * When user stops moving the progress hanlder * */ @Override public void onStopTrackingTouch(SeekBar seekBar) { mHandler.removeCallbacks(mUpdateTimeTask); int totalDuration = mp.getDuration(); int currentPosition = utils.progressToTimer(seekBar.getProgress(), totalDuration); // forward or backward to certain seconds mp.seekTo(currentPosition); // update timer progress again updateProgressBar(); } /** * On Song Playing completed * if repeat is ON play same song again * if shuffle is ON play random song * */ @Override public void onCompletion(MediaPlayer arg0) { // check for repeat is ON or OFF if(isRepeat){ // repeat is on play same song again playSong(currentSongIndex); } else if(isShuffle){ // shuffle is on - play a random song Random rand = new Random(); currentSongIndex = rand.nextInt((songsList.size() - 1) - 0 + 1) + 0; playSong(currentSongIndex); } else{ // no repeat or shuffle ON - play next song if(currentSongIndex &lt; (songsList.size() - 1)){ playSong(currentSongIndex + 1); currentSongIndex = currentSongIndex + 1; }else{ // play first song playSong(0); currentSongIndex = 0; } } } @Override public void onDestroy(){ super.onDestroy(); mp.release(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload