我有一个偏好复选框。如果选中,则应播放音乐,但如果未选中,则应停止播放音乐。我的代码有效,但它只在关闭应用程序并再次打开它后才识别复选框的命令。所以现在我想在点击时暂停音乐。
这是我的代码:
MainActivity
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity{
MediaPlayer song;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
song = MediaPlayer.create(MainActivity.this, R.raw.music);
song.start();
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean song_play = pref.getBoolean("check", true);
if(song_play == true){
song.start();
}
else
{
song.stop();
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId()==R.id.action_settings)
{
Intent open = new Intent("mlab.PREFS");
startActivity(open);
}
return false;
}
}
偏好:
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Preferences extends PreferenceActivity{
MediaPlayer song;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
答案 0 :(得分:0)
通过实施SharedPreferences.OnSharedPreferenceChangeListener
聆听SharedPreferences
中的更改,并使用onSharedPreferenceChanged
方法执行操作(播放音乐,停止播放音乐等)。