From 937c32796f30d880c06626df05ad6507870cf5eb Mon Sep 17 00:00:00 2001 From: Karthik Krishnan Date: Thu, 13 Apr 2023 14:43:31 +0530 Subject: [PATCH] Crash when enabling show_operator_name_in_statusbar_bool type casting of customized textview into OperatorNameView gives a ClassCastException. The reason is that ViewStub and Textview have the same id. Change the ViewStub name to solve this Test: Manual Bug: 254244187 Change-Id: Idf7c94a5a3e9e5ad637bef3d3031fa4ae65af710 --- packages/SystemUI/res/layout/status_bar.xml | 2 +- .../statusbar/phone/fragment/CollapsedStatusBarFragment.java | 4 ++-- .../phone/fragment/dagger/StatusBarFragmentModule.java | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index 3b71dc32b2569..d10332bcbffbc 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -78,7 +78,7 @@ android:layout_width="match_parent" android:clipChildren="false"> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java index 9f3fd727be24b..5ca7ba013bbc5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java @@ -636,9 +636,9 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private void initOperatorName() { int subId = SubscriptionManager.getDefaultDataSubscriptionId(); if (mCarrierConfigTracker.getShowOperatorNameInStatusBarConfig(subId)) { - ViewStub stub = mStatusBar.findViewById(R.id.operator_name); + View view = mStatusBar.findViewById(R.id.operator_name); mOperatorNameViewController = - mOperatorNameViewControllerFactory.create((OperatorNameView) stub.inflate()); + mOperatorNameViewControllerFactory.create((OperatorNameView) view); mOperatorNameViewController.init(); // This view should not be visible on lock-screen if (mKeyguardStateController.isShowing()) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java index 730ecded58e2c..8f9f0196abfa9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone.fragment.dagger; import android.view.View; +import android.view.ViewStub; import com.android.systemui.R; import com.android.systemui.battery.BatteryMeterView; @@ -95,7 +96,7 @@ public interface StatusBarFragmentModule { @StatusBarFragmentScope @Named(OPERATOR_NAME_VIEW) static View provideOperatorNameView(@RootView PhoneStatusBarView view) { - return view.findViewById(R.id.operator_name); + return ((ViewStub) view.findViewById(R.id.operator_name_stub)).inflate(); } /** */