2016-10-10 83 views
0

我有保存seekbar状态的问题。基本上我只将seekbar放在横向模式下,并尝试使用sheredPreferences来保存它。Android sharedPreferences方向问题

当seekbar处于上方时,代码运行良好,但我只需要在横向模式下运行。我尝试使用这样的事情在的onCreate方法:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

Button btncount; 
TextView e1, e2; 
SeekBar zip; 

int txt; 

double x , y = 22.54, z; 

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

    zip = (SeekBar)findViewById(R.id.zip); 
    btncount = (Button)findViewById(R.id.btncount); 
    e1 = (TextView)findViewById(R.id.e1); 
    e2 = (TextView)findViewById(R.id.e2); 

    btncount.setOnClickListener(this); 

    SharedPreferences settings = getSharedPreferences("mypref", 0); 
    //save in above orientation 


    int ot = getResources().getConfiguration().orientation; 
    switch (ot) { 
     case Configuration.ORIENTATION_LANDSCAPE: 
      zip.setOnSeekBarChangeListener(actionseekBar); 
      int mProgress = settings.getInt("seekname", 0); 
      //save only in landscape orientation 
      zip.setProgress(mProgress); 
      e1.setText(settings.getString("ValueY", "0")); 
      e2.setText(settings.getString("ValueZ", "0")); 

      break; 
     case Configuration.ORIENTATION_PORTRAIT: 
      e1.setText(settings.getString("ValueY", "0")); 
      e2.setText(settings.getString("ValueZ", "0")); 
      break; 
    } 
} 

@Override 
protected void onStop(){ 
    super.onStop(); 

    SharedPreferences settings = getSharedPreferences("mypref", 0); 
    SharedPreferences.Editor editor = settings.edit(); 


    int ot = getResources().getConfiguration().orientation; 
    switch (ot) { 
     case Configuration.ORIENTATION_LANDSCAPE: 
      editor.putString("ValueY", e1.getText().toString()); 
      editor.putString("ValueZ", e2.getText().toString()); 
      editor.putInt("seekname", zip.getProgress()); 
      break; 
     case Configuration.ORIENTATION_PORTRAIT: 
      editor.putString("ValueY", e1.getText().toString()); 
      break; 
    } 
    editor.commit(); 
} 

private final SeekBar.OnSeekBarChangeListener actionseekBar = new SeekBar.OnSeekBarChangeListener(){ 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

     txt = progress; 

     e2.setText(String.valueOf(txt)); 

    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 

    } 
}; 

@Override 
public void onClick(View v) { 
    if(v.getId()== R.id.btncount){ 
     counter(v); 
    } 
} 

public void counter(View v){ 

    z = Double.parseDouble(e2.getText().toString()); 

    x = y + z; 

    e1.setText(String.valueOf(x)); 
} 

}

它不工作,谁能帮助我?

+1

你在哪里设置把选项? – GoneUp

+0

嗨我编辑并粘贴所有的代码,希望这将清楚地表明我的意思。 –

+0

嗯。所以问题是你如何在纵向上隐藏酒吧? pref代码看起来很好。 – GoneUp

回答

0

公共类MainActivity扩展AppCompatActivity实现View.OnClickListener {

Button btncount; 
TextView e1, e2; 
SeekBar zip; 

int txt; 

double x, y = 22.54, z; 

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

    int ot = getResources().getConfiguration().orientation; 
    switch (ot) { 
     case Configuration.ORIENTATION_LANDSCAPE: 
      e1 = (TextView) findViewById(R.id.e1); 
      zip = (SeekBar) findViewById(R.id.zip); 
      btncount = (Button) findViewById(R.id.btncount); 
      e2 = (TextView) findViewById(R.id.e2); 

      btncount.setOnClickListener(this); 

      zip.setOnSeekBarChangeListener(actionseekBar); 

      //save only in landscape orientation 
      SharedPreferences settings = getSharedPreferences("mypref", 0); 

      if(settings != null) { 

       int mProgress = settings.getInt("seekname", 0); 

       zip.setProgress(mProgress); 
       e1.setText(settings.getString("ValueY", "0")); 

      }else{ 
       Toast.makeText(MainActivity.this, "No saved objects", Toast.LENGTH_SHORT).show(); 
      } 

      break; 
     case Configuration.ORIENTATION_PORTRAIT: 

      break; 
    } 
} 


private final SeekBar.OnSeekBarChangeListener actionseekBar = new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

     txt = progress; 

     e1.setText(String.valueOf(txt)); 

     SharedPreferences settings = getSharedPreferences("mypref", 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("ValueY", e1.getText().toString()); 
     editor.putInt("seekname", zip.getProgress()); 
     editor.apply(); 

    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 

    } 
}; 

@Override 
public void onClick(View v) { 
    if (v.getId() == R.id.btncount) { 
     counter(v); 
    } 
} 

public void counter(View v) { 

    z = Double.parseDouble(e1.getText().toString()); 

    x = y + z; 

    e2.setText(String.valueOf(x)); 
} 

}

+0

我决定删除onStop方法并在onseekbarchangelistener中插入SharedPreference这就是我正在寻找。 –