如何在活动之间传递Seek Bar变量?

时间:2018-04-09 18:53:15

标签: java android seekbar

我目前正在尝试在活动之间传递搜索栏的当前值,以便更改另一个活动中的文本大小。但是我这样做有困难。

secondActivityButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent startIntent = new Intent(getApplicationContext(), SecondActivity.class);
            startIntent.putExtra("com.example.willh.seekbar.something", seekBarValue);
            startActivity(startIntent);
        }
    });

我能够在活动之间传递静态变量,例如创建一个名为seekBarValue的int,值为5,但是我需要变量是动态的。

slidingBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        int seekBarValue = 0;

        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            seekBarValue = progress;
        }

        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }

        public void onStopTrackingTouch(SeekBar seekBar) {
            TextView resultText = (TextView) findViewById(R.id.resultText);
            resultText.setText(seekBarValue + "");
            resultText.setTextSize(seekBarValue);
        }
    });

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

创建实例变量。试试这个:

public class YOURCLASS {

private int seekBarValue;

...(other code)...

slidingBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        seekBarValue = progress;
    }

    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }

    public void onStopTrackingTouch(SeekBar seekBar) {
        TextView resultText = (TextView) findViewById(R.id.resultText);
        resultText.setText(seekBarValue + "");
        resultText.setTextSize(seekBarValue);
    }
});

secondActivityButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent startIntent = new Intent(getApplicationContext(), SecondActivity.class);
        startIntent.putExtra("com.example.willh.seekbar.something", seekBarValue);
        startActivity(startIntent);
    }
});
}

答案 1 :(得分:0)

您的问题在于以下命令:

startIntent.putExtra("com.example.willh.seekbar.something", seekBarValue);

您需要在第一个活动中声明KEY变量,同时在意图中传递值。如下

public static final String KEY = "key";

然后在第一个活动中执行以下操作 -

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putInt(Key, IntValue);
intent.putExtra(bundle);
startActivity(intent);

在SecondActivity的onCreate()方法中执行以下操作 -

int seekBarValue = getIntent().getIntExtra(FirstActivity.KEY,0);

现在该值将在seekBarValue变量中。您现在也可以在您的seconActivity中使用它。

如果这不起作用,请告诉我。此外,如果它崩溃从android监视器发送logcat输出。