我正在尝试将变量locDistance
值传递给片段。我在Activity中有一个尝试过的代码:
protected void onPostExecute(Double distance) {
locDistance = distance;
Bundle bundle = new Bundle();
bundle.putDouble("distance", locDistance );
// Fragment class Arguments
Fragment obj = new Fragment();
obj.setArguments(bundle);
}
然后在onCreate()
内获取片段中的值:
Double distance_value= getArguments().getDouble("distance");
但我的价值是0.0。任何帮助将不胜感激。
答案 0 :(得分:0)
为了在创建片段的新实例时传递值,我建议你应该使用工厂模式。有关工厂模式的更多信息,只需google它,您将获得大量信息。现在您可以尝试以下步骤:
在片段中创建静态方法。喜欢这个
private double locDistance = 0.0;
public static Fragment newInstance(double locDistance) {
Fragment fragment = new Fragment();
fragment.locDistance = locDistance;
return fragment;
}
public double getLocDistance(){
return this.locDistance;
}
AND修改你的代码
protected void onPostExecute(Double distance) {
locDistance = distance;
Fragment obj = Fragment.newInstance(locDistance);
}
现在您可以像这样检索locDistance值
Double distance = obj.getLocDistance();
答案 1 :(得分:0)
永远不会使用您显示的代码调用然后在onCreate()中获取片段中的值:
// Fragment class Arguments
Fragment obj = new Fragment();
obj.setArguments(bundle);
。 Fragment的no-arg构造函数是。
Accept:
此代码生成一个全新的片段,不会将任何内容传递给任何现有的片段。
如果您想将数据从AsyncTask传递回其他类,您最好使用回调侦听器来实现。
How to get the result of OnPostExecute() to main activity because AsyncTask is a separate class?
当然,你可以在任何地方实现监听器,但是通过传回Activity,你可以将数据发送到一些现有的Fragment而不是尝试创建一个新的。