Reputation: 252
I need to display fragment layout when the user clicks an item in navigation drawer.
Activity class : -
Fragment fragment = new PreferencesFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.mainContent, fragment)
.commit();
mDrawerList.setItemChecked(position, true);
setTitle(mNavItems.get(position).mTitle);
// Close the drawer
mDrawerLayout.closeDrawer(mDrawerPane);
In fragment class:-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.scorefragment, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//fetching results from db
}
My problem is, it is displaying an exception like
02-22 10:55:24.113: E/AndroidRuntime(31725): java.lang.IllegalStateException: ScrollView can host only one direct child
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.widget.ScrollView.addView(ScrollView.java:248)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:905)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.app.BackStackRecord.run(BackStackRecord.java:834)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1454)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:447)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.os.Handler.handleCallback(Handler.java:739)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.os.Handler.dispatchMessage(Handler.java:95)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.os.Looper.loop(Looper.java:135)
02-22 10:55:24.113: E/AndroidRuntime(31725): at android.app.ActivityThread.main(ActivityThread.java:5343)
02-22 10:55:24.113: E/AndroidRuntime(31725): at java.lang.reflect.Method.invoke(Native Method)
02-22 10:55:24.113: E/AndroidRuntime(31725): at java.lang.reflect.Method.invoke(Method.java:372)
02-22 10:55:24.113: E/AndroidRuntime(31725): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
02-22 10:55:24.113: E/AndroidRuntime(31725): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Activity layout file containing the navigation drawer list
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/mainContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F5F5DC">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="15dp">
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:weightSum="3">
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_1"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_marginRight="1dp"
android:contentDescription="@string/description_image_1"
android:scaleType="centerCrop"
android:src="@drawable/thirteenone"
android:layout_weight="1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_2"
android:layout_width="100dp"
android:layout_height="200dp"
android:contentDescription="@string/description_image_2"
android:scaleType="centerCrop"
android:src="@drawable/thirteentwo"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:layout_weight="1"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3"
android:layout_marginTop="10dp">
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_3"
android:layout_width="100dp"
android:layout_height="200dp"
android:contentDescription="@string/description_image_3"
android:scaleType="centerCrop"
android:src="@drawable/thirteenthree"
android:layout_weight="1" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_4"
android:layout_width="100dp"
android:layout_height="200dp"
android:contentDescription="@string/description_image_4"
android:scaleType="centerCrop"
android:src="@drawable/thirteenfour"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3">
<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:layout_weight="1" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="D"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/expanded_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
android:contentDescription="@string/description_zoom_touch_close" />
</FrameLayout>
</ScrollView>
<!-- The navigation drawer -->
<RelativeLayout
android:layout_width="280dp"
android:layout_height="match_parent"
android:id="@+id/drawerPane"
android:layout_gravity="start">
<!-- Profile Box -->
<RelativeLayout
android:id="@+id/profileBox"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/material_blue_grey_800"
android:padding="8dp" >
<ImageView
android:id="@+id/avatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="15dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="42dp"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/avatar"
android:orientation="vertical" >
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
<!-- List of Actions (pages) -->
<ListView
android:id="@+id/navList"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_below="@+id/profileBox"
android:choiceMode="singleChoice"
android:background="#ffffffff" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Scorefragment layout file.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="5dp"
android:background="#ffffff"
android:orientation="vertical" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<LinearLayout
android:id="@+id/one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:weightSum="3" >
<Button
android:id="@+id/bone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q1" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/btwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q2" />
</LinearLayout>
<LinearLayout
android:id="@+id/two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/abc_ab_share_pack_mtrl_alpha" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<RatingBar
android:id="@+id/rtwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3"
android:layout_weight="1"/>
</LinearLayout>
<!-- second -->
<LinearLayout
android:id="@+id/three"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3" >
<Button
android:id="@+id/bthree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/bfour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q4" />
</LinearLayout>
<LinearLayout
android:id="@+id/four"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" >
<RatingBar
android:id="@+id/rthree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
/>
<RatingBar
android:id="@+id/rfour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
</LinearLayout>
<!-- third -->
<LinearLayout
android:id="@+id/five"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3" >
<Button
android:id="@+id/bfive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q5" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/bsix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q6" />
</LinearLayout>
<LinearLayout
android:id="@+id/six"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" >
<RatingBar
android:id="@+id/rfive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
/>
<RatingBar
android:id="@+id/rsix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
</LinearLayout>
<!-- four -->
<LinearLayout
android:id="@+id/seven"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3" >
<Button
android:id="@+id/bseven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q7" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/beight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q8" />
</LinearLayout>
<LinearLayout
android:id="@+id/eight"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" >
<RatingBar
android:id="@+id/rseven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
/>
<RatingBar
android:id="@+id/reight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
</LinearLayout>
<!-- five -->
<LinearLayout
android:id="@+id/nine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3" >
<Button
android:id="@+id/bnine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q9" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/bten"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#3f51b5"
android:text="Q10" />
</LinearLayout>
<LinearLayout
android:id="@+id/ten"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="2" >
<RatingBar
android:id="@+id/rnine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
/>
<RatingBar
android:id="@+id/rten"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="3"
android:numStars="3"
android:progressTint="#FFD700"
android:stepSize="3" />
</LinearLayout>
</LinearLayout>
And I'm not able to display the layout i.e scorefragment also.
Please help me.
Upvotes: 1
Views: 878
Reputation: 528
You are getting this exception because you are taking multiple childs inside your scrollView.
Try to merge all your layout inside a single Linear Layout inside the ScrollView. This might solve your problem!
Let me know if this works .. :)
Upvotes: 0
Reputation: 1354
Scrollview contains only one child...
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/mainContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F5F5DC">
<RelativeLayout
android:id="@+id/rel_main"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="15dp">
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:weightSum="3">
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_1"
android:layout_width="100dp"
android:layout_height="200dp"
android:layout_marginRight="1dp"
android:contentDescription="@string/description_image_1"
android:scaleType="centerCrop"
android:src="@drawable/thirteenone"
android:layout_weight="1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_2"
android:layout_width="100dp"
android:layout_height="200dp"
android:contentDescription="@string/description_image_2"
android:scaleType="centerCrop"
android:src="@drawable/thirteentwo"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:layout_weight="1"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3"
android:layout_marginTop="10dp">
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_3"
android:layout_width="100dp"
android:layout_height="200dp"
android:contentDescription="@string/description_image_3"
android:scaleType="centerCrop"
android:src="@drawable/thirteenthree"
android:layout_weight="1" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<com.example.android.animationsdemo.TouchHighlightImageButton
android:id="@+id/thumb_button_4"
android:layout_width="100dp"
android:layout_height="200dp"
android:contentDescription="@string/description_image_4"
android:scaleType="centerCrop"
android:src="@drawable/thirteenfour"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3">
<CheckBox
android:id="@+id/checkBox3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:layout_weight="1" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="D"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/expanded_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
android:contentDescription="@string/description_zoom_touch_close" />
</RelativeLayout>
</ScrollView>
<!-- The navigation drawer -->
<RelativeLayout
android:layout_width="280dp"
android:layout_height="match_parent"
android:id="@+id/drawerPane"
android:layout_gravity="start">
<!-- Profile Box -->
<RelativeLayout
android:id="@+id/profileBox"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/material_blue_grey_800"
android:padding="8dp" >
<ImageView
android:id="@+id/avatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="15dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="42dp"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/avatar"
android:orientation="vertical" >
<TextView
android:id="@+id/userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
<!-- List of Actions (pages) -->
<ListView
android:id="@+id/navList"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_below="@+id/profileBox"
android:choiceMode="singleChoice"
android:background="#ffffffff" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Upvotes: 1
Reputation: 384
Yep, as the others have said, it seems like you're adding more that one view to a ScrollView
which is not possible. The good practice would be for the ScrollView
to have a LinearLayout
as its only child and then you add your desired widgets and views to that LinearLayout
.
Edit after you added the layouts.
I believe the problem is that you are trying to load (or replace) your fragments onto a ScrollView
. I tried looking at the source code for the replace
method and it seems that it adds your fragment's layout to the parent (in this case a ScrollView
) and hides the other children (It does not delete them, thus the IllegalStateException
exception). It actually does not delete the other children because you might want to manipulate them later.
In your case, you must replace your fragments with the content of the ScrollView
(which should be a FrameLayout
for the reason I said earlier) not the ScrollView
itself. Hope this solves the issue.
Upvotes: 0
Reputation: 526
In Your layout file you should have only one Layout inside ScrollView.
Upvotes: 0