片段和活动之间没有传递值
Posted
技术标签:
【中文标题】片段和活动之间没有传递值【英文标题】: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 非常感谢您提醒我逐步完成代码。我很快就发现了一个愚蠢的错误!有没有办法删除这个问题?
【参考方案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);
【讨论】:
以上是关于片段和活动之间没有传递值的主要内容,如果未能解决你的问题,请参考以下文章