私は4つのアイテム(ホーム、設定、about、help)を持つナビゲーションドロワーを持っています。アイテムをクリックすると、そのアイテムに対応するフラグメントが他のアイテムに置き換わります。フラグメントを交換するときにSeekbar値を保持する
ユーザーがシークバーの値を変更した場合さて、私は、これは3シークバーでフラグメントを設定していて、彼は、ナビゲーションパネルを開き、ホームをクリックし、設定の断片に戻ってきた後、シークバーが戻っ0"
にあります私はsaveInstanceStateをしようとどのようにフラグメントを変更する前と同じ状態でシークバーを維持します。これは、ビューがフラグメントで作成されたとき、私はビューを膨らませる原因に問題があると思うのコードである。
、しかし、私はインスタンスが決して破壊されないと思うので、コードを実行するとsaveInstanceStateは決してcalではありませんLED。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myFragmentView = inflater.inflate(R.layout.fragment_param, container, false);
seekbarAffValeur();
return myFragmentView;
}
これは私がフラグメントを変更するときのコードです。
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.home_id:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new AcceuilFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Acceuil");
item.setChecked(true);
drawerLayout.closeDrawers();
break;
case R.id.setting_id:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new ParamFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Paramètres");
item.setChecked(true);
drawerLayout.closeDrawers();
break;
case R.id.about_id:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new ProposFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("À propos");
item.setChecked(true);
drawerLayout.closeDrawers();
break;
case R.id.help_id:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new AideFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Aide");
item.setChecked(true);
drawerLayout.closeDrawers();
break;
}
ありがとうございます。
[OK]をクリックして、解決策を見つけました。
private static int disPosiVal;
private static int disCarteVal;
private static int minPosiVal;
//Pour afficher la valeur des SeekBar.
public void seekbarAffValeur(){
skbDisPosiValu = (SeekBar) myFragmentView.findViewById(R.id.skbDisPosi);
tvDisPosi = (TextView) myFragmentView.findViewById(R.id.tvValeurDisPosi);
skbDisCarteValu = (SeekBar) myFragmentView.findViewById(R.id.skbDisCarte);
tvDisCarte = (TextView) myFragmentView.findViewById(R.id.tvValeurDisCarte);
skbMinuValue = (SeekBar) myFragmentView.findViewById(R.id.skbMinPosi);
tvMinuValu = (TextView) myFragmentView.findViewById(R.id.tvValeurMinPosio);
skbDisPosiValu.setProgress(disPosiVal);
tvDisPosi.setText(disPosiVal+ "");
skbDisCarteValu.setProgress(disCarteVal);
tvDisCarte.setText(disCarteVal+"");
skbMinuValue.setProgress(minPosiVal);
tvMinuValu.setText(minPosiVal+"");
skbDisPosiValu.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
disPosiVal = progress;
tvDisPosi.setText(progress + "");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
tvDisPosi.setText(disPosiVal + "");
}
});
skbDisCarteValu.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
disCarteVal = progress;
tvDisCarte.setText(progress + "");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
tvDisCarte.setText(disCarteVal + "");
}
});
skbMinuValue.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
minPosiVal = progress;
tvMinuValu.setText(progress + "");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
tvMinuValu.setText(minPosiVal + "");
}
});
ビューは破壊が、断片(と思う)ので、私はちょうど静的変数に自分の値を保存し、ビューが作成されたとき、私はそれが属している値に設定されていません。
?また、表示されたフラグメントを変更するコードを投稿した場合にも役立ちます。 – fractalwrench
ユーザーがseekBarの進行を変更したときに値が設定されます。私は私の答えをより明確に編集します。私は今晩後でフラグメントを変更するときにコードを追加します。ありがとうございます。 –
私の解決策を以下に試しましたか? –