Update all findViewById() references to findViewByRefId()
Fixes: 157765857
Test: Robotests & CarUILibUnitTests
Change-Id: I818189e45f3bc4c5eae3fd6ddfb6b69a56a79193
diff --git a/car-ui-lib/findviewbyid-preupload-hook.sh b/car-ui-lib/findviewbyid-preupload-hook.sh
index 4969536..6478802 100755
--- a/car-ui-lib/findviewbyid-preupload-hook.sh
+++ b/car-ui-lib/findviewbyid-preupload-hook.sh
@@ -1,11 +1,7 @@
#!/bin/bash
-if grep -rq "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/toolbar/; then
- grep -r "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/toolbar/;
+if grep -rq --exclude=CarUiUtils.java "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/; then
+ grep -r --exclude-CarUiUtils.java "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/;
echo "Illegal use of findViewById or requireViewById in car-ui-lib. Please consider using CarUiUtils#findViewByRefId or CarUiUtils#requireViewByRefId" && false;
fi
-if grep -rq "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/recyclerview/; then
- grep -r "findViewById\|requireViewById" car-ui-lib/src/com/android/car/ui/recyclerview/;
- echo "Illegal use of findViewById or requireViewById in car-ui-lib. Please consider using CarUiUtils#findViewByRefId or CarUiUtils#requireViewByRefId" && false;
-fi
diff --git a/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java b/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java
index caa967f..82801cc 100644
--- a/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java
+++ b/car-ui-lib/src/com/android/car/ui/AlertDialogBuilder.java
@@ -42,6 +42,7 @@
import com.android.car.ui.recyclerview.CarUiListItemAdapter;
import com.android.car.ui.recyclerview.CarUiRadioButtonListItemAdapter;
+import com.android.car.ui.utils.CarUiUtils;
/**
* Wrapper for AlertDialog.Builder
@@ -366,7 +367,7 @@
private void setCustomList(@NonNull CarUiListItemAdapter adapter) {
View customList = LayoutInflater.from(mContext).inflate(
R.layout.car_ui_alert_dialog_list, null);
- RecyclerView mList = customList.requireViewById(R.id.list);
+ RecyclerView mList = CarUiUtils.requireViewByRefId(customList, R.id.list);
mList.setLayoutManager(new LinearLayoutManager(mContext));
mList.setAdapter(adapter);
mBuilder.setView(customList);
@@ -599,7 +600,7 @@
View contentView = LayoutInflater.from(mContext).inflate(
R.layout.car_ui_alert_dialog_edit_text, null);
- EditText editText = contentView.requireViewById(R.id.textbox);
+ EditText editText = CarUiUtils.requireViewByRefId(contentView, R.id.textbox);
editText.setText(prompt);
if (textChangedListener != null) {
@@ -638,9 +639,9 @@
View customTitle = LayoutInflater.from(mContext).inflate(
R.layout.car_ui_alert_dialog_title_with_subtitle, null);
- TextView mTitleView = customTitle.requireViewById(R.id.alertTitle);
- TextView mSubtitleView = customTitle.requireViewById(R.id.alertSubtitle);
- ImageView mIconView = customTitle.requireViewById(R.id.icon);
+ TextView mTitleView = CarUiUtils.requireViewByRefId(customTitle, R.id.alertTitle);
+ TextView mSubtitleView = CarUiUtils.requireViewByRefId(customTitle, R.id.alertSubtitle);
+ ImageView mIconView = CarUiUtils.requireViewByRefId(customTitle, R.id.icon);
mTitleView.setText(mTitle);
mTitleView.setVisibility(TextUtils.isEmpty(mTitle) ? View.GONE : View.VISIBLE);
diff --git a/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java b/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java
index 4198f9b..8ec0972 100644
--- a/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java
+++ b/car-ui-lib/src/com/android/car/ui/core/BaseLayoutController.java
@@ -35,6 +35,7 @@
import com.android.car.ui.baselayout.InsetsChangedListener;
import com.android.car.ui.toolbar.ToolbarController;
import com.android.car.ui.toolbar.ToolbarControllerImpl;
+import com.android.car.ui.utils.CarUiUtils;
import java.util.Map;
import java.util.WeakHashMap;
@@ -71,7 +72,8 @@
*
* <p>You can get a reference to it by calling {@link #getBaseLayout(Activity)}.
*/
- /* package */ static void build(Activity activity) {
+ /* package */
+ static void build(Activity activity) {
if (getThemeBoolean(activity, R.attr.carUiBaseLayout)) {
sBaseLayoutMap.put(activity, new BaseLayoutController(activity));
}
@@ -80,7 +82,8 @@
/**
* Destroy the BaseLayoutController for the given {@link Activity}.
*/
- /* package */ static void destroy(Activity activity) {
+ /* package */
+ static void destroy(Activity activity) {
sBaseLayoutMap.remove(activity);
}
@@ -121,21 +124,22 @@
.inflate(baseLayoutRes, null, false);
// Replace windowContentView with baseLayout
- ViewGroup windowContentView = activity.getWindow().findViewById(android.R.id.content);
+ ViewGroup windowContentView = CarUiUtils.findViewByRefId(
+ activity.getWindow().getDecorView(), android.R.id.content);
ViewGroup contentViewParent = (ViewGroup) windowContentView.getParent();
int contentIndex = contentViewParent.indexOfChild(windowContentView);
contentViewParent.removeView(windowContentView);
contentViewParent.addView(baseLayout, contentIndex, windowContentView.getLayoutParams());
// Add windowContentView to the baseLayout's content view
- FrameLayout contentView = baseLayout.requireViewById(R.id.content);
+ FrameLayout contentView = CarUiUtils.requireViewByRefId(baseLayout, R.id.content);
contentView.addView(windowContentView, new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
if (toolbarEnabled) {
if (legacyToolbar) {
- mToolbarController = baseLayout.requireViewById(R.id.car_ui_toolbar);
+ mToolbarController = CarUiUtils.requireViewByRefId(baseLayout, R.id.car_ui_toolbar);
} else {
mToolbarController = new ToolbarControllerImpl(baseLayout);
}
@@ -150,7 +154,7 @@
* {@link android.content.res.Resources.Theme}.
*/
private static boolean getThemeBoolean(Activity activity, int attr) {
- TypedArray a = activity.getTheme().obtainStyledAttributes(new int[] { attr });
+ TypedArray a = activity.getTheme().obtainStyledAttributes(new int[]{attr});
try {
return a.getBoolean(0, false);
@@ -191,8 +195,8 @@
/**
* Constructs an InsetsUpdater that calculates and dispatches insets to an {@link Activity}.
*
- * @param activity The activity that is using base layouts
- * @param baseLayout The root view of the base layout
+ * @param activity The activity that is using base layouts
+ * @param baseLayout The root view of the base layout
* @param contentView The android.R.id.content View
*/
InsetsUpdater(Activity activity, View baseLayout, View contentView) {
@@ -252,7 +256,8 @@
return;
}
- View content = mActivity.requireViewById(android.R.id.content);
+ View content = CarUiUtils.requireViewByRefId(mActivity.getWindow().getDecorView(),
+ android.R.id.content);
// Calculate how much each inset view overlays the content view
int top = 0;
@@ -305,8 +310,9 @@
}
if (!handled) {
- mActivity.requireViewById(android.R.id.content).setPadding(
- insets.getLeft(), insets.getTop(), insets.getRight(), insets.getBottom());
+ CarUiUtils.requireViewByRefId(mActivity.getWindow().getDecorView(),
+ android.R.id.content).setPadding(insets.getLeft(), insets.getTop(),
+ insets.getRight(), insets.getBottom());
}
}
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java
index 6a848b8..4a61b3f 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiDialogFragment.java
@@ -36,6 +36,8 @@
import androidx.fragment.app.DialogFragment;
import androidx.preference.DialogPreference;
+import com.android.car.ui.utils.CarUiUtils;
+
/**
* Abstract base class which presents a dialog associated with a {@link
* androidx.preference.DialogPreference}. Since the preference object may not be available during
@@ -193,7 +195,7 @@
*/
@CallSuper
protected void onBindDialogView(View view) {
- View dialogMessageView = view.findViewById(android.R.id.message);
+ View dialogMessageView = CarUiUtils.findViewByRefId(view, android.R.id.message);
if (dialogMessageView != null) {
CharSequence message = mDialogMessage;
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java
index 8774491..3882e03 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiEditTextPreference.java
@@ -25,6 +25,7 @@
import androidx.preference.PreferenceViewHolder;
import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
/**
* This class extends the base {@link EditTextPreference} class. Adds the drawable icon to
@@ -65,7 +66,7 @@
*/
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
public View getWidgetActionContainer(PreferenceViewHolder holder) {
- return holder.findViewById(R.id.action_widget_container);
+ return CarUiUtils.findViewByRefId(holder.itemView, R.id.action_widget_container);
}
@Override
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java
index 288ec95..f02f105 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiRadioButtonPreference.java
@@ -24,6 +24,7 @@
import androidx.preference.TwoStatePreference;
import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
/** A preference which shows a radio button at the start of the preference. */
public class CarUiRadioButtonPreference extends TwoStatePreference {
@@ -58,7 +59,8 @@
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
- RadioButton radioButton = (RadioButton) holder.findViewById(R.id.radio_button);
+ RadioButton radioButton = (RadioButton) CarUiUtils.findViewByRefId(holder.itemView,
+ R.id.radio_button);
radioButton.setChecked(isChecked());
}
}
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java
index 3b3a238..7458e9b 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiSeekBarDialogPreference.java
@@ -25,6 +25,7 @@
import androidx.preference.DialogPreference;
import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
/** A class implements some basic methods of a seekbar dialog preference. */
public class CarUiSeekBarDialogPreference extends DialogPreference
@@ -83,10 +84,10 @@
@Override
public void onBindDialogView(View view) {
- mSeekBar = view.findViewById(R.id.seek_bar);
- mSeekBarTopTextView = view.findViewById(R.id.seek_bar_text_top);
- mSeekBarLeftTextView = view.findViewById(R.id.seek_bar_text_left);
- mSeekBarRightTextView = view.findViewById(R.id.seek_bar_text_right);
+ mSeekBar = CarUiUtils.findViewByRefId(view, R.id.seek_bar);
+ mSeekBarTopTextView = CarUiUtils.findViewByRefId(view, R.id.seek_bar_text_top);
+ mSeekBarLeftTextView = CarUiUtils.findViewByRefId(view, R.id.seek_bar_text_left);
+ mSeekBarRightTextView = CarUiUtils.findViewByRefId(view, R.id.seek_bar_text_right);
setProgress(mSeekBarProgress);
diff --git a/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java b/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java
index a96cef1..bd4ff66 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/CarUiTwoActionPreference.java
@@ -24,6 +24,7 @@
import androidx.preference.PreferenceViewHolder;
import com.android.car.ui.R;
+import com.android.car.ui.utils.CarUiUtils;
/**
* A preference which can perform two actions. The secondary action is shown by default.
@@ -85,8 +86,9 @@
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
- View actionContainer = holder.findViewById(R.id.action_widget_container);
- View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+ View actionContainer = CarUiUtils.findViewByRefId(holder.itemView,
+ R.id.action_widget_container);
+ View widgetFrame = CarUiUtils.findViewByRefId(holder.itemView, android.R.id.widget_frame);
if (mIsActionShown) {
actionContainer.setVisibility(View.VISIBLE);
onBindWidgetFrame(widgetFrame);
diff --git a/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java b/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java
index 97a58d2..7df5228 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/EditTextPreferenceDialogFragment.java
@@ -28,6 +28,8 @@
import androidx.annotation.NonNull;
import androidx.preference.EditTextPreference;
+import com.android.car.ui.utils.CarUiUtils;
+
/**
* Presents a dialog with an {@link EditText} associated with an {@link EditTextPreference}.
*
@@ -78,7 +80,7 @@
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
- mEditText = view.findViewById(android.R.id.edit);
+ mEditText = CarUiUtils.findViewByRefId(view, android.R.id.edit);
if (mEditText == null) {
throw new IllegalStateException(
diff --git a/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java b/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java
index b3da82e..0369bdf 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/ListPreferenceFragment.java
@@ -40,6 +40,7 @@
import com.android.car.ui.recyclerview.CarUiRecyclerView;
import com.android.car.ui.toolbar.Toolbar;
import com.android.car.ui.toolbar.ToolbarController;
+import com.android.car.ui.utils.CarUiUtils;
import java.util.ArrayList;
import java.util.List;
@@ -93,12 +94,12 @@
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- final CarUiRecyclerView carUiRecyclerView = view.requireViewById(R.id.list);
+ final CarUiRecyclerView carUiRecyclerView = CarUiUtils.requireViewByRefId(view, R.id.list);
mToolbar = CarUi.getToolbar(getActivity());
// TODO(b/150230923) remove the code for the old toolbar height change when apps are ready
if (mToolbar == null) {
- Toolbar toolbarView = view.requireViewById(R.id.toolbar);
+ Toolbar toolbarView = CarUiUtils.requireViewByRefId(view, R.id.toolbar);
mToolbar = toolbarView;
carUiRecyclerView.setPadding(0, toolbarView.getHeight(), 0, 0);
@@ -211,7 +212,7 @@
@Override
public void onCarUiInsetsChanged(Insets insets) {
View view = requireView();
- view.requireViewById(R.id.list)
+ CarUiUtils.requireViewByRefId(view, R.id.list)
.setPadding(0, insets.getTop(), 0, insets.getBottom());
view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
}
diff --git a/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java b/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
index 1fc1014..6f608b9 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/MultiSelectListPreferenceFragment.java
@@ -39,6 +39,7 @@
import com.android.car.ui.recyclerview.CarUiRecyclerView;
import com.android.car.ui.toolbar.Toolbar;
import com.android.car.ui.toolbar.ToolbarController;
+import com.android.car.ui.utils.CarUiUtils;
import java.util.ArrayList;
import java.util.HashSet;
@@ -89,12 +90,12 @@
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- final CarUiRecyclerView recyclerView = view.requireViewById(R.id.list);
+ final CarUiRecyclerView recyclerView = CarUiUtils.requireViewByRefId(view, R.id.list);
mToolbar = CarUi.getToolbar(requireActivity());
// TODO(b/150230923) remove the code for the old toolbar height change when apps are ready
if (mToolbar == null) {
- Toolbar toolbarView = view.requireViewById(R.id.toolbar);
+ Toolbar toolbarView = CarUiUtils.requireViewByRefId(view, R.id.toolbar);
mToolbar = toolbarView;
recyclerView.setPadding(0, toolbarView.getHeight(), 0, 0);
@@ -206,7 +207,7 @@
@Override
public void onCarUiInsetsChanged(Insets insets) {
View view = requireView();
- view.requireViewById(R.id.list)
+ CarUiUtils.requireViewByRefId(view, R.id.list)
.setPadding(0, insets.getTop(), 0, insets.getBottom());
view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
}
diff --git a/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java b/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java
index 853c173..4d664e2 100644
--- a/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java
+++ b/car-ui-lib/src/com/android/car/ui/preference/PreferenceFragment.java
@@ -83,8 +83,8 @@
}
// TODO(b/150230923) remove the code for the old toolbar height change when apps are ready
- final RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
- final Toolbar toolbar = view.findViewById(R.id.toolbar);
+ final RecyclerView recyclerView = CarUiUtils.findViewByRefId(view, R.id.recycler_view);
+ final Toolbar toolbar = CarUiUtils.findViewByRefId(view, R.id.toolbar);
if (recyclerView == null || toolbar == null) {
return;
}
@@ -118,7 +118,7 @@
@Override
public void onCarUiInsetsChanged(Insets insets) {
View view = requireView();
- view.requireViewById(R.id.recycler_view)
+ CarUiUtils.requireViewByRefId(view, R.id.recycler_view)
.setPadding(0, insets.getTop(), 0, insets.getBottom());
view.setPadding(insets.getLeft(), 0, insets.getRight(), 0);
}