簡體   English   中英

Android sharedPreferences定向問題

[英]Android sharedPreferences orientation problems

我在保存seekbar狀態時遇到問題。 基本上,我只將搜尋欄放在橫向模式下,並嘗試使用sheredPreferences進行保存。

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

}

它沒有用,有人可以幫我嗎?

公共類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));
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM