首页 > 解决方案 > 将值从片段传递到另一个活动

问题描述

我有一个 DialogFragment,它有一个 listView 作为容器。我已经在 listView 上设置了 OnItemClickListener。

当用户触摸一个项目并将其传递给另一个活动然后将该值存储到变量中时,如何获取该值?我需要根据要选择的项目设置倒计时。实际上只能显示带有项目位置的简单吐司消息。

请注意,将传递值的活动不是片段活动。

我正在考虑使用 Bundle,但即使在阅读了 Google 网站上的文档之后,对编程了解不多也是一种痛苦。

在 MainActivy 上,这是我设置计时器的方式:

new CountDownTimer(30000, 1000) {

        public void onTick(long millisUntilFinished) {
            String elapsedTime = String.valueOf(millisUntilFinished / 1000);
            timer.setText(elapsedTime);
        }
        public void onFinish() {
            timer.setText(R.string.text);
        }
    }.start();
}

示例:

如果用户触摸第 1 项,则计时器的值为 15 分钟,依此类推...

请指导我,谢谢。

标签: androidandroid-fragmentsbundleandroid-fragmentactivity

解决方案


因此,您希望将数据从 Fragment 传递到 Activity。这是你如何做到的。

将数据从 Fragment 传递到 Activity:

final Intent intent = new Intent(getActivity(), ActivityName.class);
intent.putExtra("counter-value", counterValue);
getActivity().startActivity(intent);

读取Activity中的值:

final Bundle extras = getIntent().getExtras();
if(extras != null) {
    final int counterValue = extras.getInt("counter-value", -1);
    showCountDown(counterValue);
}

现在,将值传递给countdowntimer.

private void showCountDown(final int counterValue) {
    new CountDownTimer(counterValue, 1000) {

        public void onTick(long millisUntilFinished) {
            String elapsedTime = String.valueOf(millisUntilFinished / 1000);
            timer.setText(elapsedTime);
        }
        public void onFinish() {
            timer.setText(R.string.text);
        }
    }.start();
}

推荐阅读