XML : Passing data from activity to fragment causes "ScrollView can host only one direct child" error

I am making an app using this tutorial. I made some changes in my code, ie I wanted to get data from server to my main activity and pass it to my fragments. Before that , when I would open the app it worked perfectly, bu now it crashes. I have tried a bunch of answers from stackoverflow (1, 2, 3, 4, 5...) before asking a question, but none of them answered my question. When I was getting restaurants from fragment directly it worked perfectly but passing the data from the activity causes this error.

Main Activity (I pass get data from server and pass it to fragment):

  TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);  tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.tab_map)));  tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.tab_list)));  tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.tab_my_list)));  tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);  tabLayout.setTabMode(TabLayout.MODE_FIXED);    final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);  final PagerAdapter adapter = new PagerAdapter      (getSupportFragmentManager(), tabLayout.getTabCount());  viewPager.setAdapter(adapter);  viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));    RestaurantsFragment restaurantsFragment = new RestaurantsFragment();  Bundle args = new Bundle();  args.putParcelableArrayList("restaurantList", (ArrayList<? extends Parcelable>) restaurantList);  restaurantsFragment.setArguments(args);    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();  fragmentTransaction.replace(R.id.sliding_tabs, restaurantsFragment);  fragmentTransaction.addToBackStack(null);  fragmentTransaction.commit();    

Restaurant Fragment (I do get data from my main activity, I get the restaurants from the server when I debug):

  public class RestaurantsFragment extends Fragment {    private static final String TAG = RestaurantsFragment.class.getSimpleName();    // Restaurants json url  private ProgressDialog pDialog;  private ArrayList restaurantList = new ArrayList<>();  private ListView listView;  private CustomListAdapter adapter;    @Override  public View onCreateView(LayoutInflater inflater,                           ViewGroup container,                           Bundle savedInstanceState) {      View view = inflater.inflate(R.layout.fragment_restaurants, container, false);        Bundle bundle = this.getArguments();      if (bundle != null) {          restaurantList = bundle.getParcelableArrayList ("restaurantList");      }        listView = (ListView) view.findViewById(R.id.restaurants_list);      adapter = new CustomListAdapter(getActivity(), restaurantList);      listView.setAdapter(adapter);        pDialog = new ProgressDialog(getActivity());        pDialog.setMessage("Loading...");      pDialog.show();          return view;  }    

fragment_restaurants

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context=".sliderfragments.RestaurantsFragment">    <ListView      android:id="@+id/restaurants_list"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:divider="@color/list_divider"      android:dividerHeight="1dp"      android:listSelector="@drawable/list_row_selector" />    </RelativeLayout>    

list_row

  <!-- Thumbnail Image -->  <com.android.volley.toolbox.NetworkImageView      android:id="@+id/thumbnail"      android:background="@drawable/default_profile"      android:layout_width="80dp"      android:layout_height="80dp"      android:layout_alignParentLeft="true"      android:layout_marginRight="8dp" />    <!-- User Name -->  <TextView      android:id="@+id/userName"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_alignTop="@+id/thumbnail"      android:layout_toRightOf="@+id/thumbnail"      android:textSize="@dimen/userName"      android:textStyle="bold" />    <!-- Date -->  <TextView      android:id="@+id/date"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:layout_below="@id/userName"      android:layout_marginTop="1dip"      android:layout_toRightOf="@+id/thumbnail"      android:textSize="@dimen/date" />    <!-- Time -->  <TextView      android:id="@+id/time"      android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:layout_below="@id/date"      android:layout_marginTop="5dp"      android:layout_toRightOf="@+id/thumbnail"      android:textColor="@color/time"      android:textSize="@dimen/time" />    </RelativeLayout>    

Stack trace:

  10-09 12:30:12.755 32374-32374/? E/AndroidRuntime: FATAL EXCEPTION: main    Process: com.test.kemo.restaurant, PID: 32374    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.kemo.restaurant/com.test.kemo.restaurant.MainActivity}: java.lang.IllegalStateException: HorizontalScrollView can host only one direct child    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)    at android.app.ActivityThread.access$800(ActivityThread.java:135)    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)    at android.os.Handler.dispatchMessage(Handler.java:102)    at android.os.Looper.loop(Looper.java:136)    at android.app.ActivityThread.main(ActivityThread.java:5021)    at java.lang.reflect.Method.invokeNative(Native Method)    at java.lang.reflect.Method.invoke(Method.java:515)    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)    at dalvik.system.NativeStart.main(Native Method)    Caused by: java.lang.IllegalStateException: HorizontalScrollView can host only one direct child    at android.widget.HorizontalScrollView.addView(HorizontalScrollView.java:216)    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330)    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174)    at android.app.Activity.performStart(Activity.java:5347)    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)     at android.app.ActivityThread.access$800(ActivityThread.java:135)     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)     at android.os.Handler.dispatchMessage(Handler.java:102)     at android.os.Looper.loop(Looper.java:136)     at android.app.ActivityThread.main(ActivityThread.java:5021)     at java.lang.reflect.Method.invokeNative(Native Method)     at java.lang.reflect.Method.invoke(Method.java:515)     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)     at dalvik.system.NativeStart.main(Native Method)     

No comments:

Post a Comment