我有一个带操作栏的应用。它有一个" Main"片段和"偏好"片段。
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Fragment fragment = new Main();
FragmentManager fragmentManager = getSupportFragmentManager();
switch(position) {
case 0:
fragment = new Main();
break;
case 1:
fragment = new Preferences();
break;
}
fragmentManager.beginTransaction()
.replace(R.id.fragment1, fragment)
.commit();
drawerLayout.closeDrawers();
}
});
&#34;偏好&#34; fragment有一个seekBar,它使用SharedPreferences中的值进行更新。这是在&#34;偏好&#34;中的相关代码。片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
container.removeAllViews();
View view = inflater.inflate(R.layout.preferences, container, false);
fontSizeBar = (SeekBar) view.findViewById(R.id.fontSizeBar);
fontSizeBar.setOnSeekBarChangeListener(this);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(Preferences.this.getActivity().getBaseContext());
final int fontSize = preferences.getInt("fontSize", 10);
fontSizeBar.setMax(0);
fontSizeBar.setMax(10);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
fontSizeBar.setProgress(fontSize);
}
});
事情是变量&#34; fontSize&#34;值为10,seekBar响应以下事件:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
fontSizeBar.setProgress(progress);
Log.v("Progress changed", "Font size: " + progress);
}
但是seekBar的位置并没有改变。我一直在搜索SO和谷歌,直到现在都没有运气。
其他信息:我使用的是android.support.v4
更新
移动seekBar滑块时,不会调用以下事件。此外,当我更改seekBar滑块然后选择主片段并返回首选项片段时,seekBar仍然是我选择的值。
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
Log.v("Start touching", "Font size: " + seekBar.getProgress());
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
Log.v("Stop touching", "Font size: " + seekBar.getProgress());
}