【问题标题】:How to return SeekBar value to previous activity?如何将 SeekBar 值返回到以前的活动?
【发布时间】:2015-11-27 17:23:16
【问题描述】:

如何将seekBar值从Activity B返回到Activity A

seekBar=(SeekBar)findViewById(R.id.seekBarPercentage);

save.setOnClickListener(new View.OnClickListener()  //return to previous activity {
    @Override
    public void onClick(View v) {
        Intent returnIntent=new Intent();
        Project=project.getSelectedItem().toString(); //spinner value
        Description=description.getText().toString(); //editText value
        // seekBar value ?
        returnIntent.putExtra("Project",Project);
        returnIntent.putExtra("Description",Description);
        setResult(Activity.RESULT_OK,returnIntent);
    }
});

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    int progress = 0;

    @Override
        public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {
            progress = progresValue;
            // Toast.makeText(getApplicationContext(), "Changing seekbar's progress", Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            //  Toast.makeText(getApplicationContext(), "Started tracking seekbar", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            progressText.setText("Covered: " + progress + "/" + seekBar.getMax());
            // Toast.makeText(getApplicationContext(), "Stopped tracking seekbar", Toast.LENGTH_SHORT).show();
        }
    });

}

【问题讨论】:

  • 我没发现问题?你几乎得到了你需要的一切?您可以通过getProgress() 获取进度
  • @oberflansch 抱歉,新来的。我的代码没有问题,只是不知道如何获取seekBar 值。

标签: java android seekbar startactivityforresult


【解决方案1】:

除了@Anindya Dutta 的回答,如果您想保留数据,请使用SharedPreferences

获取SharedPreferences

SharedPreferences prefs = getDefaultSharedPreferences(context);

阅读偏好:

String key = "test1_string_pref";
String default = "returned_if_not_defined";
String test1 = prefs.getString(key, default);

编辑和保存首选项

SharedPreferences.Edtior editor = prefs.edit(); //Get SharedPref Editor
editor.putString(key, "My String");
editor.commit();

更短的书写方式

prefs.edit().putString(key, "Value").commit();

SharedPreferences 的其他信息:JavaDocAndroid Developers Article

【讨论】:

    【解决方案2】:
    1. int progress 保留在OnSeekBarChangeListener 之外。
    2. progress = seekBar.getProgress() 检索当前进度。
    3. 类似于returnIntent.putExtra("Description",Description);,将progress 作为额外的Intent

    【讨论】:

    • 好的,所以将int progress 设置为全局和returnIntent.putExtra("progress",progress); ?我需要买点什么吗?
    • 使用getProgress()获取SeekBar的当前值。
    • 为了完整性编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2017-08-07
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多