按保存按钮时应用程序崩溃

时间:2012-06-12 08:59:11

标签: android button save volume

我有一个关于在按下按钮时保存音量变化的问题,并且不明白为什么。你能帮忙吗?我的代码如下:

    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时提交更改。谢谢你们

3 个答案:

答案 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

中的