弹出式搜索栏 window
Seekbar on popup window
我在弹出窗口上有两个搜索栏 window,没问题!我的问题是,当我 return 到弹出窗口 window 时,搜索栏总是重置为 0,而不是上次设置的位置。
SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.VolBar1);
volbar1.setOnSeekBarChangeListener(barChange);
SeekBar volbar2 = (SeekBar)popupView.findViewById(R.id.VolBar2);
volbar2.setOnSeekBarChangeListener(barChange);
barChange = new OnSeekBarChangeListener()
{
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
switch (seekBar.getId())
{
case R.id.VolBar1:
snd.setVolume((float)progress/100.0f);
break;
case R.id.VolBar2:
sndtwo.setVolume((float)progress/100.0f);
break;
}
}
};
您需要保存您从 onProgressChanged()
获得的当前进度,这是您的 OnSeekBarChangeListener 的一个方法。打开弹出窗口时,使用 setProgress()
初始化 SeekBar。
public class SomeActivity extends Activity{
int currentProgr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(...);
Button b = (Button) findViewById(R.id.yourbutton);
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
...
SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.bar);
volbar1.setProgress(currentProgr);
volbar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
...
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
currentProgr=progress;
}
});
...
popupWindow.showAtLocation(findViewById(R.id.b1), Gravity.CENTER, 0, 0);
}
});
}
}
例如,要在设备旋转时保存进度,您需要save your instance state.
要跨多个会话保存进度,您需要将其保存为 preference.
我在弹出窗口上有两个搜索栏 window,没问题!我的问题是,当我 return 到弹出窗口 window 时,搜索栏总是重置为 0,而不是上次设置的位置。
SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.VolBar1);
volbar1.setOnSeekBarChangeListener(barChange);
SeekBar volbar2 = (SeekBar)popupView.findViewById(R.id.VolBar2);
volbar2.setOnSeekBarChangeListener(barChange);
barChange = new OnSeekBarChangeListener()
{
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
switch (seekBar.getId())
{
case R.id.VolBar1:
snd.setVolume((float)progress/100.0f);
break;
case R.id.VolBar2:
sndtwo.setVolume((float)progress/100.0f);
break;
}
}
};
您需要保存您从 onProgressChanged()
获得的当前进度,这是您的 OnSeekBarChangeListener 的一个方法。打开弹出窗口时,使用 setProgress()
初始化 SeekBar。
public class SomeActivity extends Activity{
int currentProgr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(...);
Button b = (Button) findViewById(R.id.yourbutton);
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
...
SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.bar);
volbar1.setProgress(currentProgr);
volbar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
...
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
currentProgr=progress;
}
});
...
popupWindow.showAtLocation(findViewById(R.id.b1), Gravity.CENTER, 0, 0);
}
});
}
}
例如,要在设备旋转时保存进度,您需要save your instance state. 要跨多个会话保存进度,您需要将其保存为 preference.