【问题标题】:Values not being passed between fragment and activity片段和活动之间没有传递值
【发布时间】:2013-12-27 11:04:23
【问题描述】:

我有一个带有 2 个选项卡的选项卡式布局。每个选项卡可以收集一些双精度形式的数据,例如 52.363。当在任一选项卡中按下按钮时,它们会打开一个新活动,其中显示在前一个选项卡中输入的数字。但是,当我按下提交按钮时,没有显示值。关于为什么的任何想法?

片段选项卡代码(两个选项卡目前相同,不言自明的部分也省略了):

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view;
        view = inflater.inflate(R.layout.advfrag_layout, container, false);
        return view;
    }

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    inSnow = (EditText) getView().findViewById(R.id.inchesSnow);
    calc = (Button) getView().findViewById(R.id.button);
    results = (TextView) getView().findViewById(R.id.resultView);
    calc.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    try{
                        inchSnow = Double.parseDouble(inSnow.getText().toString());
                    }catch (NumberFormatException ex){
                        results.setText("Field Blank!");

                    }
                Intent intent = new Intent(getActivity().getBaseContext(), ResultPost.class);
                intent.putExtra("inchSnow", inchSnow);
                getActivity().startActivity(intent);
        }
    });

}

数据发送到的活动,ResultPost.Class(同样,只有必要部分):

public class ResultPost extends ActionBarActivity {

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result_post);
        AdvancedFragment advancedFragment= new AdvancedFragment();

        Intent intent = getIntent();
        double inchesn = intent.getDoubleExtra("inchSnow", 0);
    }
}

ResultPost.Class 继续更改 textview 以显示此数据,但 textview 的值仍为“0”,即使我给它赋予了不同的值(例如 6),它也是默认值。

【问题讨论】:

  • 您已经确认intent.putExtra("inchSnow", inchSnow); 输入了正确的值?
  • 我如何验证这一点?我已将双精度 inchSnow 定义为程序中的一个值,但它从未出现在 ResultPost.Class 中。我确实知道inchSnow 有一个与之关联的值,因为我在片段中有一个TextView,它显示了用于测试目的的输入值。
  • 您是否尝试过单步执行代码并检查放入意图的值?
  • 不要使用getActivity().getBaseContext(),使用getActivity(),仅此而已。
  • @Szymon 非常感谢您提醒我逐步完成代码。我很快就发现了一个愚蠢的错误!有没有办法删除这个问题?

标签: android android-intent android-fragments tabs android-activity


【解决方案1】:

试试这样:

public class ResultPost extends ActionBarActivity {

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result_post);
        AdvancedFragment advancedFragment= new AdvancedFragment();

        Intent intent = getIntent();
        double inchesn = intent.getDoubleExtra("inchSnow",0.0);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多