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

How to pass Seek Bar variables between activities?

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

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 且值为 5 的 int,但是我需要该变量是动态的。

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

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

您的问题出在以下命令上:

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

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

public static final String KEY = "key";

然后在您的第一个 activity-

中执行以下操作
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 输出。

创建实例变量。试试看:

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