2016-10-10 46 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這就是我正在尋找。 –