在片段中使用SeekBar上的setProgress并不会改变seekBar位置

时间:2014-10-06 15:03:51

标签: android android-fragments seekbar android-seekbar

我有一个带操作栏的应用。它有一个" 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());

}

0 个答案:

没有答案