Android seekbar进度未更新

Android seekbar进度未更新,android,sharedpreferences,android-seekbar,Android,Sharedpreferences,Android Seekbar,我在我的应用程序中使用seekBar进行声音池音量控制,我使用PopupWindow进行seekBar,一切正常,但每当我更改或暂停活动,并再次打开seekBar PopupWindow时,seekBar不再是我上次保存的值。但它总是100%返回其默认值,即使我使用SharedReferences,但只有在我不离开当前活动的情况下,它才能正常工作 public class ActivityMain extends Activity implements OnTouchListener, OnMe

我在我的应用程序中使用seekBar进行声音池音量控制,我使用PopupWindow进行seekBar,一切正常,但每当我更改或暂停活动,并再次打开seekBar PopupWindow时,seekBar不再是我上次保存的值。但它总是100%返回其默认值,即使我使用SharedReferences,但只有在我不离开当前活动的情况下,它才能正常工作

public class ActivityMain extends Activity implements OnTouchListener, OnMenuItemClickListener {

SoundManager snd;
OnSeekBarChangeListener barChange1;

private int soundID;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.main_activity);
      }

public void onRestart() {
    super.onRestart();

}

public void onResume() {
    super.onResume();



    final Button btnOpenPopup = (Button)findViewById(R.id.button6);
    btnOpenPopup.setOnClickListener(new Button.OnClickListener(){

         @Override
         public void onClick(View arg0) {
         LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  
         View popupView = layoutInflater.inflate(R.layout.popup, null);  
         final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT); 


                     barChange1 = new OnSeekBarChangeListener() 
                     {


                        @Override
                        public void onStopTrackingTouch(SeekBar seekBar) {
                        SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
                        prefs.edit().putInt("seekBarValue", seekBar.getProgress()).commit();            

                        }

                        @Override
                        public void onStartTrackingTouch(SeekBar seekBar) {  }

                        @Override
                        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                                 snd.setVolume((float)progress/100.0f);

                            }
                        };

                    SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.VolBar1);                
                    volbar1.setMax(100);                    
                    int value = 0;
                    SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
                    value = prefs.getInt("seekBarValue", 100);
                    volbar1.setProgress(value);
                    volbar1.setOnSeekBarChangeListener(barChange1);


                    Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
                    btnDismiss.setOnClickListener(new Button.OnClickListener(){

             @Override
             public void onClick(View v) {
             // TODO Auto-generated method stub
             popupWindow.dismiss();


                     }});

                             popupWindow.showAsDropDown(btnOpenPopup, 60, 20);

                   }});
                        {
                }



      this.setVolumeControlStream(AudioManager.STREAM_MUSIC);

      snd = new SoundManager(getApplicationContext());

      soundID = snd.load(R.raw.sound_1);



 ImageView img01 = (ImageView) findViewById(R.id.imageView11);
 img01.setOnTouchListener(new OnTouchListener() {    

     @Override
     public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
     }

                snd.play(soundID);
                return false;
        }           
    });
}



        @Override
        public boolean onMenuItemClick(MenuItem item) {
            // TODO Auto-generated method stub
            return false;
        }


        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return false;
        }



        @Override
        protected void onPause() {
            super.onPause();
            snd.unloadAll();



        }
    }
把这个放在简历上


我也在做同样的事情。这对我有用。这是我的密码。它没有所有的声音

    package com.titlesource.testproject;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutCompat;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.SeekBar;

public class ActivityMain extends AppCompatActivity {

    SeekBar.OnSeekBarChangeListener barChange1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activity_main);
    }

    public void onRestart() {
        super.onRestart();

    }

    public void onResume() {
        super.onResume();


        final Button btnOpenPopup = (Button)findViewById(R.id.button6);
        btnOpenPopup.setOnClickListener(new Button.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                View popupView = layoutInflater.inflate(R.layout.popup, null);
                final PopupWindow popupWindow = new PopupWindow(popupView, LinearLayoutCompat.LayoutParams.WRAP_CONTENT,  LinearLayoutCompat.LayoutParams.WRAP_CONTENT);


                barChange1 = new SeekBar.OnSeekBarChangeListener()
                {


                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
                        prefs.edit().putInt("seekBarValue", seekBar.getProgress()).commit();

                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {  }

                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                    }
                };

                SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.VolBar1);
                volbar1.setMax(100);
                int value = 0;
                SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
                value = prefs.getInt("seekBarValue", 100);
                volbar1.setProgress(value);
                volbar1.setOnSeekBarChangeListener(barChange1);


                Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
                btnDismiss.setOnClickListener(new Button.OnClickListener(){

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        popupWindow.dismiss();


                    }});

                popupWindow.showAsDropDown(btnOpenPopup, 60, 20);

            }});
        {
        }
    }
}

嗨,我试过了,但它让我的应用程序崩溃了。。必须进行更多测试,可能我做错了。volbar1可能未初始化。执行此volbar1=(SeekBar)popupView。findViewById(R.id.VolB)这很奇怪,事实上,SeekBar正常工作,但如果我暂停或更改活动,设备的音量始终返回到默认值100%。我仍然有一个问题,如何获得这两个“声音池音量”和“seekbar值”以在恢复时更新。seekbar值现在更新得很好,它在Resume上显示了我的上一个位置,但soundpool卷本身在每次Resume上都会返回其默认值100%。请帮帮我!请张贴您的全部代码。完整片段代码
    package com.titlesource.testproject;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutCompat;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.SeekBar;

public class ActivityMain extends AppCompatActivity {

    SeekBar.OnSeekBarChangeListener barChange1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activity_main);
    }

    public void onRestart() {
        super.onRestart();

    }

    public void onResume() {
        super.onResume();


        final Button btnOpenPopup = (Button)findViewById(R.id.button6);
        btnOpenPopup.setOnClickListener(new Button.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                View popupView = layoutInflater.inflate(R.layout.popup, null);
                final PopupWindow popupWindow = new PopupWindow(popupView, LinearLayoutCompat.LayoutParams.WRAP_CONTENT,  LinearLayoutCompat.LayoutParams.WRAP_CONTENT);


                barChange1 = new SeekBar.OnSeekBarChangeListener()
                {


                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
                        prefs.edit().putInt("seekBarValue", seekBar.getProgress()).commit();

                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {  }

                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                    }
                };

                SeekBar volbar1 = (SeekBar)popupView.findViewById(R.id.VolBar1);
                volbar1.setMax(100);
                int value = 0;
                SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
                value = prefs.getInt("seekBarValue", 100);
                volbar1.setProgress(value);
                volbar1.setOnSeekBarChangeListener(barChange1);


                Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
                btnDismiss.setOnClickListener(new Button.OnClickListener(){

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        popupWindow.dismiss();


                    }});

                popupWindow.showAsDropDown(btnOpenPopup, 60, 20);

            }});
        {
        }
    }
}