我正在尝试从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);
代码未显示任何错误,但应用未运行。我正在做的错误和可能的解决方案是什么?感谢。
答案 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()
方法在片段中的onCreateView
或onCreate
中获取arrayList。