我有一个关于在按下按钮时保存音量变化的问题,并且不明白为什么。你能帮忙吗?我的代码如下:
private AudioManager aManager;
private SeekBar seekVolume;
private Button save;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
Button save = (Button) findViewById(R.id.save);
}
public void saveOnClickListener(View view){
int progress = 1;
int keyCode = 0;
KeyEvent keyEvent;
aManager.setStreamVolume(AudioManager.STREAM_RING, progress , AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN || keyCode==KeyEvent.KEYCODE_VOLUME_UP){
seekVolume.setProgress(aManager.getStreamVolume(AudioManager.STREAM_RING));
}else if (keyCode==KeyEvent.KEYCODE_VOLUME_DOWN || keyCode==KeyEvent.KEYCODE_VOLUME_UP){
seekVolume.setProgress(aManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION));
}
}
}
首先,我想对Ringer Volume进行更改,并在按下Save Button时提交更改。谢谢你们
答案 0 :(得分:1)
我认为在xml你没有添加这个,因为你已经使用了方法 saveOnClickListener 在Button属性中添加xml
android:onClick="saveOnClickListener"
或者如果你没有在xml中添加,你可以使用如下所示的活动
Button save = (Button) findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// do here what u want onclick of save button
}
}
});
答案 1 :(得分:0)
你已经在oncrete上创建了aManager本地,所以它的同名全局变量在saveOnClickListener中仍然为null
而不是
AudioManager aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
使用
aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
在Oncreate ...........
答案 2 :(得分:0)
您最好将aManager和seekVolume设为全局并删除
SeekBar seekVolume = (SeekBar) findViewById(R.id.seekVolume);
onClickListener 中的