Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I am using navigation components in my
Android Project
.I am using
One Activity model
and following this model I have 1
Base Activity
and the rest are all
Fragments
.
My problem comes on pressing the
back button
when i have to move to back to a previous fragment.I have
Scroll view
in my fragment named
WorkerAnalyticsFragment
shown below.
The
Container
shown in the center contains the
Scroll view
as the root view to scroll the contents inside container when
Order analytics
and
Motivation analytics
are expand to show details.The xml code of the
fragment_worker_analytics
is shown below.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".Fragment.WorkerAnalyticsFragment"
android:background="@color/uniform_background">
<LinearLayout
android:id="@+id/profile_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/profile_container_margin_top">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circle_image_view_large"
android:layout_width="@dimen/circle_image_view_large_width"
android:layout_height="@dimen/circle_image_view_large_height"
android:src="@drawable/example_avatar"
android:layout_gravity="center_horizontal"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_view_profile_name"
android:maxLines="1"
android:layout_gravity="center_horizontal"
style="@style/UniformTextAppearance"/>
</LinearLayout>
<include layout="@layout/analytics_container" android:id="@+id/analytics_container"/>
<include layout="@layout/order_and_report_buttons" android:id="@+id/order_and_report_buttons"/>
</LinearLayout>
</layout>
The xml code of the analytics_container which is shown in the center in the above picture is here.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="350dp"
android:layout_margin="@dimen/analytics_container_margin"
android:background="@drawable/container_background"
android:minHeight="350dp"
android:scrollbars="none"
android:padding="@dimen/analytics_container_padding">
<LinearLayout
android:id="@+id/analytics_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/current_order_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text_view_current_order_status_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_view_current_order_status_text"
android:textStyle="bold"
style="@style/UniformTextAppearance"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center">
<LinearLayout
android:id="@+id/current_order_details_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="@dimen/step_view_margin_top"
android:visibility="visible">
<com.kofigyan.stateprogressbar.StateProgressBar
android:id="@+id/order_progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:spb_maxStateNumber="four"
app:spb_stateDescriptionSize="@dimen/sbp_state_description_text_size"
app:spb_maxDescriptionLines="1"
app:spb_stateBackgroundColor="@color/spb_state_background_color"
app:spb_stateForegroundColor="@color/spb_state_foreground_color"
app:spb_descriptionTopSpaceIncrementer="@dimen/spb_description_top_Space_incrementer"
app:spb_currentStateDescriptionColor="@color/spb_current_state_description_color"
app:spb_stateDescriptionColor="@color/spb_state_description_color"
app:spb_stateNumberBackgroundColor="@color/spb_state_number_background_color"/>
<include layout="@layout/current_item" android:id="@+id/current_item"/>
</LinearLayout>
<TextView
android:id="@+id/empty_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_current_order_text"
android:textSize="@dimen/empty_text_size"
android:textStyle="bold"
android:layout_gravity="center"
android:visibility="invisible"
android:background="@color/current_item_container_background_color"
style="@style/EmptyTextAppearance"
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/profile_analytics_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="@dimen/profile_container_margin_top">
<TextView
android:id="@+id/text_view_worker_analytics"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_view_worker_analytics_text"
android:textStyle="bold"
style="@style/UniformTextAppearance"/>
<include layout="@layout/card_view_analytics_container"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</layout>
I have another fragment named OrderFragment which comes out when the user clicks ORDER button as shown in above picture.Here is the picture.
The code of the OrderFragment is shown below.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:id="@+id/stock_fragment_parent_layout_padding"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/stock_fragment_parent_layout_padding"
android:background="@color/uniform_background"
tools:context=".Fragment.OrderFragment">
<LinearLayout
android:id="@+id/stock_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:layout_marginTop="@dimen/stock_container_margin_top"
android:background="@drawable/container_background">
<TextView
android:id="@+id/text_view_available_stock_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/text_view_available_stock_text"
style="@style/UniformTextAppearance"/>
<LinearLayout
android:id="@+id/stock_list_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/stock_list_container_margin_top">
<include layout="@layout/recycler_view" android:id="@+id/recycler_view"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</layout>
The problem comes when i press the Back button to return to the previous WorkerAnayticsFragment shown above by xml code and by picture, my application crashes.
Here is my Log cat showing the error when application crash.
2020-03-27 01:26:57.757 20708-20708/com.example.nibotransporti E/AndroidRuntime: FATAL EXCEPTION:
Process: com.example.nibotransporti, PID: 20708
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to
android.widget.ScrollView$SavedState
at android.widget.ScrollView.onRestoreInstanceState(ScrollView.java:1872)
at android.view.View.dispatchRestoreInstanceState(View.java:17819)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3773)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:3781)
at android.view.View.restoreHierarchyState(View.java:17797)
at androidx.fragment.app.Fragment.restoreViewState(Fragment.java:574)
at androidx.fragment.app.FragmentStateManager.restoreViewState(FragmentStateManager.java:505)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1164)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2209)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1976)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1915)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1811)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:427)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
2020-03-27 01:26:57.799 20708-20708/com.example.nibotransporti I/Process: Sending signal. PID:
20708 SIG: 9
I am in a serious trouble.Please help me by suggesting me a robust solution.
your code is not complete,but I guess you used the same id for view.
when this fragment rebuild,these same id might lead to the problem.
you can try to change the id of scrollView,should be solved
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.