【发布时间】: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