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

Posted

技术标签:

【中文标题】按下保存按钮时应用程序崩溃【英文标题】:App get Crash when press Save Button 【发布时间】:2012-06-12 08:59:11 【问题描述】:

我在保存按下按钮时更改的音量时遇到问题,不明白为什么。你能帮忙吗?我的代码如下:

    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));

                
 


首先我想对振铃音量进行更改,并在按下保存按钮时提交更改。谢谢大家

【问题讨论】:

LogCat 说什么? 我想这不需要任何许可,不是吗? SeekBar seekVolume = (SeekBar) findViewById(R.id.seekVolume); 不知道这是否会导致崩溃,但是您声明了两次。在 onCreate 中就足够了 在 switch case 块后添加 break 语句。同时删除 seekVolume 的重复声明。 【参考方案1】:

我认为在 xml 中你没有添加这个,因为你使用了方法 saveOnClickListener 在 xml 中添加 Button 属性作为

 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 
               
        


    );

【讨论】:

在我的保存按钮的 XML 中,我有 android:onCLick="saveOnClickListener"Thanks Khan 现在它正在工作,但请参阅(请参阅上面的编辑代码)和我的另一个评论。谢谢队友 为此,您必须使用 seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener().....等,您可以在其中获取从 onProgessChangemethod 中的哪个更改量导入的方法 但是如何在save.saveOnClickListener(View view) 中使用seekBar.setOnSeekBarChangeListener() 呢? 我没有足够的声望在聊天中交谈 :|。我试图弄清楚如何将seekBar.setOnSeekBarChangeListener() 置于onCLick 之外,但当我按下保存按钮时,更改仍会保存【参考方案2】:

您已在 oncrete 中将 aManager 设为本地,因此它的同名全局变量在 saveOnClickListener 中仍为 null

而不是这个

 AudioManager aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

使用

aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

在 Oncreate 中............

【讨论】:

【参考方案3】:

您最好将 aManager 和 seekVolume 设为全局并删除

    SeekBar seekVolume = (SeekBar) findViewById(R.id.seekVolume);

在 onClickListener 中

【讨论】:

以上是关于按下保存按钮时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮时应用程序崩溃; iOS模拟

按下注册按钮时应用程序崩溃

为啥当我按下返回按钮时我的程序崩溃

当我按下购物车按钮时,我的应用程序崩溃了

当Webview方向更改然后按下后退按钮时,应用程序崩溃

我正在使用 Fragments,当我快速按下后退按钮时,应用程序崩溃了。它随机发生