如何将JSON数据从Activity发送到Fragment?

时间:2017-04-22 10:52:44

标签: android json android-fragments android-activity

我正在尝试从JSON获取数据并将一部分数据发送到所有片段。 这是我的代码:

app.config(['$routeProvider','$locationProvider',function ($routeProvider,$locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider
    .when('/', {
        templateUrl: 'index.html'
    })
    .when('/about', {
        templateUrl: 'about.html'
    })
    .when('/service', {
        templateUrl: 'service.html'
    });}]);

在此之前,我已在数组列表和 private void setupViewPager(ViewPager viewPager,ArrayList<Product> productname,int p) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); Bundle args = new Bundle(); } String price = productname.get(1).getPrice(); args.putString("key", price); TheFragment tf1 = new TheFragment(); TheFragment tf2 = new TheFragment(); TheFragment tf3 = new TheFragment(); TheFragment tf4 = new TheFragment(); adapter.addFragment(tf1 , "ONE"); tf1.setArguments(args); adapter.addFragment(tf2 , "Two"); tf2.setArguments(args); adapter.addFragment(tf3 , "Three"); tf3.setArguments(args); adapter.addFragment(tf4 , "Four"); tf4.setArguments(args); //3 adapter.addFragment(new TheFragment(), "TWO"); // Can I send data by coding this way? //3 adapter.addFragment(new TheFragment(), "THREE"); //3 adapter.addFragment(new TheFragment(),"THE 4"); viewPager.setAdapter(adapter); } 中检索了JSON值。

n=jsonArray.length();

JSON文件包含名称,价格和图片。我想在我的片段中显示价格。

setupViewPager(viewPager,arrayList,n);

代码未显示任何错误,但应用未运行。我正在做的错误和可能的解决方案是什么?感谢。

2 个答案:

答案 0 :(得分:0)

更改片段中的这行代码 -

   public class TheFragment extends Fragment {

    TextView tv;
    public TheFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_this, container, false);
    }

   @Override
   public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
       super.onViewCreated(view, savedInstanceState);
       tv = (TextView) view.findViewById(R.id.thePrice);
   }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String price = getArguments().getString("key");
        tv.setText(price);
    }
}

希望会很好。

答案 1 :(得分:0)

您好在片段中使用newInstance方法,如下所示。

public static Fragment newInstance(ArrayList<Product> jsonData) {

            Bundle args = new Bundle();
            args.putStringArrayList("Key","jsonDatainArray");
            fragment.setArguments(args);
            return fragment;
}

并初始化片段如下

 TheFragment theFragment= TheFragment.newInstance("arrayListHere");

使用getArguments()方法在片段中的onCreateViewonCreate中获取arrayList。