【问题标题】:Save changes within a button in android在android中的按钮内保存更改
【发布时间】:2012-06-11 16:07:40
【问题描述】:

我是 android 开发的新手,我正试图弄清楚如何制作一个按钮来保存 Activity 中的更改。简介:我有一个 seekBar,我可以在其中更改铃声音量,但它会直接更改系统,我放了一个按钮来保存更改,我不知道该怎么做。这是我的代码:

ma​​in.xml

 <Button
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_text"/>

    <SeekBar
        android:id="@+id/seekVolume"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

活动

public class SaveActivity extends Activity {

    private AudioManager aManager;
    private SeekBar seekVolume;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        aManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        Button save = (Button) findViewById(R.id.save);

        setOnClickListener();      
}
    private void setOnClickListener(){
        SeekBar seekVolume = (SeekBar) findViewById(R.id.seekVolume);

        seekVolume.setMax(aManager.getStreamMaxVolume(AudioManager.STREAM_RING));
        seekVolume.setKeyProgressIncrement(1);
        seekVolume.setProgress(aManager.getStreamVolume(AudioManager.STREAM_RING));
        seekVolume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            public void onStopTrackingTouch(SeekBar ringvolume) {
            }
            public void onStartTrackingTouch(SeekBar ringvolume) {
            }
            public void onProgressChanged(SeekBar ringvolume, int progress,boolean fromUser) {
aManager.setStreamVolume(AudioManager.STREAM_RING, progress, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 
            }
        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN || keyCode==KeyEvent.KEYCODE_VOLUME_UP){
            seekVolume.setProgress(aManager.getStreamVolume(AudioManager.STREAM_RING));
    }
        return (super.onKeyDown(keyCode, event));
    }

}

我真的不知道该怎么做。谢谢各位!

【问题讨论】:

  • @hawaii.five-0 你指的是PreferenceActivity吗?谢谢

标签: android button save state


【解决方案1】:

阅读您的偏好(onCreate()):

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
seekVolume.setProgress(preferences.getInt("storedVol", 0));

保存您的偏好(onDestroy()):

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedVol", seekVolume.getProgress()); // value to store
editor.commit();

您在onCreate() 中检索Button save,但不对其进行任何操作。你想让它做什么?如何通过添加连接其onClickListener

  save.setOnClickListener(mySaveHandler);

onCreate()?那么:

View.OnClickListener mySaveHandler = new View.OnClickListener() {
  public void onClick(View v) {
   // Save preferences here instead/aswell
 }
}

【讨论】:

  • 非常感谢,但我有一个问题:我应该在哪里阅读我的偏好,在 onCreate 中?我应该把它保存在 onKeyDown 还是我的 setOnClickListener 方法中?谢谢大家
  • 谢谢,但是我应该把save.setOnClickListener放在哪里?我知道当我按下 save 按钮时,所做的更改会保存在 SharedPreferences 中。对不起我的坚持,但我是新手,并尝试理解:)
  • 如果我把代码放在上面,我的应用程序会改变铃声音量(就像我的初始代码一样),而不是那个,保存按钮未使用,当我从电话按返回按钮时,我的应用程序得到崩溃...请交配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多