0

アクションバー付きのアプリがあります。「メイン」フラグメントと「設定」フラグメントがあります。

@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();
                }
            });

「Preferences」フラグメントには、SharedPreferences からの値で更新される seekBar があります。これは、「設定」フラグメント内でこれを行う関連コードです。

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

問題は、変数「fontSize」の値が 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とGoogleでたくさん検索してきましたが、今まで運がありませんでした。

追加情報: 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());

}
4

0 に答える 0