Android搜索栏进度未更新

时间:2015-12-21 17:44:00

标签: android sharedpreferences android-seekbar

我在我的应用程序上使用seekBar进行音池音量控制,我使用PopupWindow进行搜索栏,一切正常,但每当我更改或暂停我的活动时,我再次打开搜索栏弹出窗口,搜索栏不再是我持续的值已经救了。但是它总是返回到默认值100%,即使我使用的SharedPreferences效果很好,但前提是我不留下当前的活动。

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



        }
    }

2 个答案:

答案 0 :(得分:0)

把它放在onResume()

     int value = 0;
     SharedPreferences prefs = getBaseContext().getSharedPreferences("mySharedPrefsFilename1", Context.MODE_PRIVATE);
     value = prefs.getInt("seekBarValue", 100)
     volbar1.setProgress(value);

答案 1 :(得分:0)

我正在做同样的事情。它为我工作。这是我的代码。它没有所有声音的东西。

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

            }});
        {
        }
    }
}