Merge "Add description for Wi-Fi calling mode"

This commit is contained in:
Hall Liu
2019-03-12 20:49:21 +00:00
committed by Gerrit Code Review
9 changed files with 445 additions and 14 deletions

View File

@@ -1165,4 +1165,17 @@
<item>0</item> <item>0</item>
</string-array> </string-array>
<!-- WiFi calling mode array -->
<string-array name="wifi_calling_mode_summaries" translatable="false">
<item>@string/wifi_calling_mode_wifi_preferred_summary</item>
<item>@string/wifi_calling_mode_cellular_preferred_summary</item>
<item>@string/wifi_calling_mode_wifi_only_summary</item>
</string-array>
<!-- WiFi calling mode array without wifi only mode -->
<string-array name="wifi_calling_mode_summaries_without_wifi_only" translatable="false">
<item>@string/wifi_calling_mode_wifi_preferred_summary</item>
<item>@string/wifi_calling_mode_cellular_preferred_summary</item>
</string-array>
</resources> </resources>

View File

@@ -149,6 +149,11 @@
<attr name="aspectRatio" format="float" /> <attr name="aspectRatio" format="float" />
</declare-styleable> </declare-styleable>
<declare-styleable name="ListWithEntrySummaryPreference">
<!-- Summaries of entry -->
<attr name="entrySummaries" format="reference" />
</declare-styleable>
<!-- For UsageView --> <!-- For UsageView -->
<declare-styleable name="UsageView"> <declare-styleable name="UsageView">
<attr name="android:colorAccent" /> <attr name="android:colorAccent" />

View File

@@ -291,6 +291,15 @@
<dimen name="password_requirement_textsize">14sp</dimen> <dimen name="password_requirement_textsize">14sp</dimen>
<!-- Visible vertical space we want to show below password edittext field when ime is shown.
The unit is sp as it is related to the text size of password requirement item. -->
<dimen name="visible_vertical_space_below_password">20sp</dimen>
<!-- Select dialog -->
<dimen name="select_dialog_padding_start">20dp</dimen>
<dimen name="select_dialog_item_margin_start">12dp</dimen>
<dimen name="select_dialog_summary_padding_bottom">8dp</dimen>
<!-- Padding between the donut and the storage summary. --> <!-- Padding between the donut and the storage summary. -->
<dimen name="storage_summary_padding_end">16dp</dimen> <dimen name="storage_summary_padding_end">16dp</dimen>
<!-- Text size of the big number in the donut. --> <!-- Text size of the big number in the donut. -->

View File

@@ -2302,7 +2302,7 @@
<!-- Title of WFC preference item [CHAR LIMIT=30] --> <!-- Title of WFC preference item [CHAR LIMIT=30] -->
<string name="wifi_calling_mode_title">Calling preference</string> <string name="wifi_calling_mode_title">Calling preference</string>
<!-- Title of WFC preference selection dialog [CHAR LIMIT=30] --> <!-- Title of WFC preference selection dialog [CHAR LIMIT=30] -->
<string name="wifi_calling_mode_dialog_title">Wi-Fi calling mode</string> <string name="wifi_calling_mode_dialog_title">Calling preference</string>
<!-- Title of WFC roaming preference item [CHAR LIMIT=45] --> <!-- Title of WFC roaming preference item [CHAR LIMIT=45] -->
<string name="wifi_calling_roaming_mode_title">Roaming preference</string> <string name="wifi_calling_roaming_mode_title">Roaming preference</string>
<!-- Summary of WFC roaming preference item [CHAR LIMIT=NONE]--> <!-- Summary of WFC roaming preference item [CHAR LIMIT=NONE]-->
@@ -2310,9 +2310,9 @@
<!-- WFC mode dialog [CHAR LIMIT=45] --> <!-- WFC mode dialog [CHAR LIMIT=45] -->
<string name="wifi_calling_roaming_mode_dialog_title">Roaming preference</string> <string name="wifi_calling_roaming_mode_dialog_title">Roaming preference</string>
<string-array name="wifi_calling_mode_choices"> <string-array name="wifi_calling_mode_choices">
<item>Wi-Fi preferred</item> <item>@*android:string/wfc_mode_wifi_preferred_summary</item>
<item>Mobile preferred</item> <item>@*android:string/wfc_mode_cellular_preferred_summary</item>
<item>Wi-Fi only</item> <item>@*android:string/wfc_mode_wifi_only_summary</item>
</string-array> </string-array>
<string-array name="wifi_calling_mode_choices_v2"> <string-array name="wifi_calling_mode_choices_v2">
<item>Wi-Fi</item> <item>Wi-Fi</item>
@@ -2325,8 +2325,8 @@
<item>"0"</item> <item>"0"</item>
</string-array> </string-array>
<string-array name="wifi_calling_mode_choices_without_wifi_only"> <string-array name="wifi_calling_mode_choices_without_wifi_only">
<item>Wi-Fi preferred</item> <item>@*android:string/wfc_mode_wifi_preferred_summary</item>
<item>Mobile preferred</item> <item>@*android:string/wfc_mode_cellular_preferred_summary</item>
</string-array> </string-array>
<string-array name="wifi_calling_mode_choices_v2_without_wifi_only"> <string-array name="wifi_calling_mode_choices_v2_without_wifi_only">
<item>Wi-Fi</item> <item>Wi-Fi</item>
@@ -2336,6 +2336,14 @@
<item>"2"</item> <item>"2"</item>
<item>"1"</item> <item>"1"</item>
</string-array> </string-array>
<!-- Summary of WFC preference item on the WFC preference selection dialog. [CHAR LIMIT=70]-->
<string name="wifi_calling_mode_wifi_preferred_summary">If Wi\u2011Fi is unavailable, use mobile network</string>
<!-- Summary of WFC preference item on the WFC preference selection dialog. [CHAR LIMIT=70]-->
<string name="wifi_calling_mode_cellular_preferred_summary">If mobile network is unavailable, use Wi\u2011Fi</string>
<!-- Summary of WFC preference item on the WFC preference selection dialog. [CHAR LIMIT=70]-->
<string name="wifi_calling_mode_wifi_only_summary">Call over Wi\u2011Fi. If Wi\u2011Fi is lost, call will end.</string>
<!-- Wi-Fi Calling settings. Text displayed when Wi-Fi Calling is off --> <!-- Wi-Fi Calling settings. Text displayed when Wi-Fi Calling is off -->
<string name="wifi_calling_off_explanation">When Wi-Fi calling is on, your phone can route calls via Wi-Fi networks or your carrier\u2019s network, depending on your preference and which signal is stronger. Before turning on this feature, check with your carrier regarding fees and other details.<xliff:g id="additional_text" example="Learn More">%1$s</xliff:g></string> <string name="wifi_calling_off_explanation">When Wi-Fi calling is on, your phone can route calls via Wi-Fi networks or your carrier\u2019s network, depending on your preference and which signal is stronger. Before turning on this feature, check with your carrier regarding fees and other details.<xliff:g id="additional_text" example="Learn More">%1$s</xliff:g></string>
<!-- Wi-Fi Calling settings. Additional text displayed when Wi-Fi Calling is off. Default empty. [CHAR LIMIT=NONE] --> <!-- Wi-Fi Calling settings. Additional text displayed when Wi-Fi Calling is off. Default empty. [CHAR LIMIT=NONE] -->

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2018 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/select_dialog_padding_start"
android:paddingEnd="?android:attr/dialogPreferredPadding"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants">
<RadioButton
android:id="@+id/radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="false" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:layout_marginStart="@dimen/select_dialog_item_margin_start"
android:layout_gravity="center_vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorAlertDialogListItem"
android:ellipsize="marquee" />
<TextView
android:id="@+id/summary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/select_dialog_summary_padding_bottom"
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="10" />
</LinearLayout>
</LinearLayout>

View File

@@ -15,24 +15,27 @@
--> -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:key="wifi_calling_settings" android:key="wifi_calling_settings"
android:title="@string/wifi_calling_settings_title"> android:title="@string/wifi_calling_settings_title">
<ListPreference <com.android.settings.wifi.calling.ListWithEntrySummaryPreference
android:key="wifi_calling_mode" android:key="wifi_calling_mode"
android:title="@string/wifi_calling_mode_title" android:title="@string/wifi_calling_mode_title"
android:summary="@string/wifi_calling_mode_title" android:summary="@string/wifi_calling_mode_title"
android:entries="@array/wifi_calling_mode_choices" android:entries="@array/wifi_calling_mode_choices"
android:entryValues="@array/wifi_calling_mode_values" android:entryValues="@array/wifi_calling_mode_values"
android:dialogTitle="@string/wifi_calling_mode_dialog_title" /> android:dialogTitle="@string/wifi_calling_mode_dialog_title"
settings:entrySummaries="@array/wifi_calling_mode_summaries" />
<ListPreference <com.android.settings.wifi.calling.ListWithEntrySummaryPreference
android:key="wifi_calling_roaming_mode" android:key="wifi_calling_roaming_mode"
android:title="@string/wifi_calling_roaming_mode_title" android:title="@string/wifi_calling_roaming_mode_title"
android:summary="@string/wifi_calling_roaming_mode_summary" android:summary="@string/wifi_calling_roaming_mode_summary"
android:entries="@array/wifi_calling_mode_choices_v2" android:entries="@array/wifi_calling_mode_choices_v2"
android:entryValues="@array/wifi_calling_mode_values" android:entryValues="@array/wifi_calling_mode_values"
android:dialogTitle="@string/wifi_calling_roaming_mode_dialog_title" /> android:dialogTitle="@string/wifi_calling_roaming_mode_dialog_title"
settings:entrySummaries="@array/wifi_calling_mode_summaries" />
<Preference <Preference
android:key="emergency_address_key" android:key="emergency_address_key"

View File

@@ -0,0 +1,204 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wifi.calling;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.RadioButton;
import android.widget.TextView;
import com.android.settings.CustomListPreference;
import com.android.settings.R;
/**
* ListPreference contain the entry summary.
*/
public class ListWithEntrySummaryPreference extends CustomListPreference {
private static final String LOG_TAG = "ListWithEntrySummaryPreference";
private final Context mContext;
private CharSequence[] mSummaries;
/**
* ListWithEntrySummaryPreference constructor.
*
* @param context The context of view.
* @param attrs The attributes of the XML tag that is inflating the linear layout.
*/
public ListWithEntrySummaryPreference(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
TypedArray array = context.obtainStyledAttributes(attrs,
R.styleable.ListWithEntrySummaryPreference, 0, 0);
mSummaries = array.getTextArray(R.styleable.ListWithEntrySummaryPreference_entrySummaries);
array.recycle();
}
/**
* Sets the summaries of mode items to be shown in the mode select dialog.
*
* @param summariesResId The summaries of mode items.
*/
public void setEntrySummaries(int summariesResId) {
mSummaries = getContext().getResources().getTextArray(summariesResId);
}
/**
* Sets the summaries of mode items to be shown in the mode select dialog.
*
* @param summaries The summaries of mode items.
*/
public void setEntrySummaries(CharSequence[] summaries) {
mSummaries = summaries;
}
private CharSequence getEntrySummary(int index) {
if (mSummaries == null) {
Log.w(LOG_TAG, "getEntrySummary : mSummaries is null");
return "";
}
return mSummaries[index];
}
@Override
protected void onPrepareDialogBuilder(Builder builder,
DialogInterface.OnClickListener listener) {
ListAdapter la = (ListAdapter) new SelectorAdapter(mContext,
R.xml.single_choice_list_item_2, this);
builder.setSingleChoiceItems(la, findIndexOfValue(getValue()), listener);
super.onPrepareDialogBuilder(builder, listener);
}
private static class SelectorAdapter extends ArrayAdapter<CharSequence> {
private final Context mContext;
private ListWithEntrySummaryPreference mSelector;
/**
* SelectorAdapter constructor.
*
* @param context The current context.
* @param rowResourceId The resource id of the XML tag that is inflating the linear layout.
* @param listPreference The instance of ListWithEntrySummaryPreference.
*/
public SelectorAdapter(Context context, int rowResourceId,
ListWithEntrySummaryPreference listPreference) {
super(context, rowResourceId, listPreference.getEntryValues());
mContext = context;
mSelector = listPreference;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View row = inflater.inflate(R.xml.single_choice_list_item_2, parent, false);
TextView title = (TextView) row.findViewById(R.id.title);
title.setText(mSelector.getEntries()[position]);
TextView summary = (TextView) row.findViewById(R.id.summary);
summary.setText(mSelector.getEntrySummary(position));
RadioButton rb = (RadioButton) row.findViewById(R.id.radio);
if (position == mSelector.findIndexOfValue(mSelector.getValue())) {
rb.setChecked(true);
}
return row;
}
}
@Override
protected Parcelable onSaveInstanceState() {
final Parcelable superState = super.onSaveInstanceState();
final SavedState myState = new SavedState(superState);
myState.mEntries = getEntries();
myState.mEntryValues = getEntryValues();
myState.mSummaries = mSummaries;
return myState;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state == null || !state.getClass().equals(SavedState.class)) {
// Didn't save state for us in onSaveInstanceState
super.onRestoreInstanceState(state);
return;
}
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
setEntries(myState.mEntries);
setEntryValues(myState.mEntryValues);
mSummaries = myState.mSummaries;
}
/**
* We save entries, entryValues and summaries into bundle.
* At onCreate of fragment, dialog will be restored if it was open. In this case,
* we need to restore entries, entryValues and summaries. Without those information,
* crash when entering multi window during wfc modes dialog shown.
*/
private static class SavedState extends BaseSavedState {
private CharSequence[] mEntries;
private CharSequence[] mEntryValues;
private CharSequence[] mSummaries;
public SavedState(Parcel source) {
super(source);
mEntries = source.readCharSequenceArray();
mEntryValues = source.readCharSequenceArray();
mSummaries = source.readCharSequenceArray();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeCharSequenceArray(mEntries);
dest.writeCharSequenceArray(mEntryValues);
dest.writeCharSequenceArray(mSummaries);
}
public SavedState(Parcelable superState) {
super(superState);
}
public static final Parcelable.Creator<SavedState> CREATOR =
new Parcelable.Creator<SavedState>() {
@Override
public SavedState createFromParcel(Parcel in) {
return new SavedState(in);
}
@Override
public SavedState[] newArray(int size) {
return new SavedState[size];
}
};
}
}

View File

@@ -81,8 +81,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
//UI objects //UI objects
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private Switch mSwitch; private Switch mSwitch;
private ListPreference mButtonWfcMode; private ListWithEntrySummaryPreference mButtonWfcMode;
private ListPreference mButtonWfcRoamingMode; private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
private Preference mUpdateAddress; private Preference mUpdateAddress;
private TextView mEmptyView; private TextView mEmptyView;
@@ -260,10 +260,11 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
mImsManager = getImsManager(); mImsManager = getImsManager();
mButtonWfcMode = (ListPreference) findPreference(BUTTON_WFC_MODE); mButtonWfcMode = (ListWithEntrySummaryPreference) findPreference(BUTTON_WFC_MODE);
mButtonWfcMode.setOnPreferenceChangeListener(this); mButtonWfcMode.setOnPreferenceChangeListener(this);
mButtonWfcRoamingMode = (ListPreference) findPreference(BUTTON_WFC_ROAMING_MODE); mButtonWfcRoamingMode = (ListWithEntrySummaryPreference) findPreference(
BUTTON_WFC_ROAMING_MODE);
mButtonWfcRoamingMode.setOnPreferenceChangeListener(this); mButtonWfcRoamingMode.setOnPreferenceChangeListener(this);
mUpdateAddress = (Preference) findPreference(PREFERENCE_EMERGENCY_ADDRESS); mUpdateAddress = (Preference) findPreference(PREFERENCE_EMERGENCY_ADDRESS);
@@ -324,10 +325,14 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
if (!isWifiOnlySupported) { if (!isWifiOnlySupported) {
mButtonWfcMode.setEntries(R.array.wifi_calling_mode_choices_without_wifi_only); mButtonWfcMode.setEntries(R.array.wifi_calling_mode_choices_without_wifi_only);
mButtonWfcMode.setEntryValues(R.array.wifi_calling_mode_values_without_wifi_only); mButtonWfcMode.setEntryValues(R.array.wifi_calling_mode_values_without_wifi_only);
mButtonWfcMode.setEntrySummaries(R.array.wifi_calling_mode_summaries_without_wifi_only);
mButtonWfcRoamingMode.setEntries( mButtonWfcRoamingMode.setEntries(
R.array.wifi_calling_mode_choices_v2_without_wifi_only); R.array.wifi_calling_mode_choices_v2_without_wifi_only);
mButtonWfcRoamingMode.setEntryValues( mButtonWfcRoamingMode.setEntryValues(
R.array.wifi_calling_mode_values_without_wifi_only); R.array.wifi_calling_mode_values_without_wifi_only);
mButtonWfcRoamingMode.setEntrySummaries(
R.array.wifi_calling_mode_summaries_without_wifi_only);
} }

View File

@@ -0,0 +1,126 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.wifi.calling;
import static com.google.common.truth.Truth.assertThat;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Parcelable;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.io.IOException;
@RunWith(RobolectricTestRunner.class)
public class ListWithEntrySummaryPreferenceTest {
private Context mContext;
private ListWithEntrySummaryPreference mPreference;
private CharSequence[] mDefaultEntries =
{"default_entry1", "default_entry2", "default_entry3"};
private CharSequence[] mDefaultEntryValues = {"0", "1", "2"};
private CharSequence[] mDefaultEntrySummaries =
{"default_summary1", "default_summary2", "default_summary3"};
private CharSequence[] mCustomEntries = {"custom_entry1", "custom_entry2"};
private CharSequence[] mCustomEntryValues = {"0", "1"};
private CharSequence[] mCustomEntrySummaries = {"custom_summary1", "custom_summary2"};
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mPreference = new ListWithEntrySummaryPreference(mContext, null);
mPreference.setEntries(mDefaultEntries);
mPreference.setEntryValues(mDefaultEntryValues);
mPreference.setEntrySummaries(mDefaultEntrySummaries);
}
@Test
public void initialize_defaultEntries_shouldDisplayDefalutEntries() {
AlertDialog dialog = showDialog(mPreference);
ListAdapter adapter = dialog.getListView().getAdapter();
int len = mDefaultEntries.length;
assertThat(adapter.getCount()).isEqualTo(len);
for (int i = 0; i < len; i++) {
TextView title = adapter.getView(i, null, null).findViewById(R.id.title);
TextView summary = adapter.getView(i, null, null).findViewById(R.id.summary);
assertThat(title.getText()).isEqualTo(mDefaultEntries[i]);
assertThat(summary.getText()).isEqualTo(mDefaultEntrySummaries[i]);
}
}
@Test
public void setEntries_customEntries_shouldUpdateEntries() {
mPreference.setEntries(mCustomEntries);
mPreference.setEntryValues(mCustomEntryValues);
mPreference.setEntrySummaries(mCustomEntrySummaries);
AlertDialog dialog = showDialog(mPreference);
ListAdapter adapter = dialog.getListView().getAdapter();
int len = mCustomEntries.length;
assertThat(adapter.getCount()).isEqualTo(len);
for (int i = 0; i < len; i++) {
TextView title = adapter.getView(i, null, null).findViewById(R.id.title);
TextView summary = adapter.getView(i, null, null).findViewById(R.id.summary);
assertThat(title.getText()).isEqualTo(mCustomEntries[i]);
assertThat(summary.getText()).isEqualTo(mCustomEntrySummaries[i]);
}
}
@Test
public void onSaveAndRestoreInstanceState_resumePreference_shouldNotChangeEntries() {
setEntries_customEntries_shouldUpdateEntries();
final Parcelable parcelable = mPreference.onSaveInstanceState();
ListWithEntrySummaryPreference preference
= new ListWithEntrySummaryPreference(mContext, null);
preference.setEntries(mDefaultEntries);
preference.setEntryValues(mDefaultEntryValues);
preference.setEntrySummaries(mDefaultEntrySummaries);
preference.onRestoreInstanceState(parcelable);
AlertDialog dialog = showDialog(preference);
ListAdapter adapter = dialog.getListView().getAdapter();
int len = mCustomEntries.length;
assertThat(adapter.getCount()).isEqualTo(len);
for (int i = 0; i < len; i++) {
TextView title = adapter.getView(i, null, null).findViewById(R.id.title);
TextView summary = adapter.getView(i, null, null).findViewById(R.id.summary);
assertThat(title.getText()).isEqualTo(mCustomEntries[i]);
assertThat(summary.getText()).isEqualTo(mCustomEntrySummaries[i]);
}
}
private AlertDialog showDialog(ListWithEntrySummaryPreference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
preference.onPrepareDialogBuilder(builder, null);
return builder.show();
}
}