Inflating contact browser fragments from XML
Change-Id: I3395e70bed9aee8f5c70b92952644f58f425dfab
diff --git a/res/layout-xlarge/contact_browser.xml b/res/layout-xlarge/contact_browser.xml
index cc5e0eb..d7ab617 100644
--- a/res/layout-xlarge/contact_browser.xml
+++ b/res/layout-xlarge/contact_browser.xml
@@ -45,11 +45,13 @@
android:layout_marginTop="40dip"
android:background="#7e7e87" />
- <FrameLayout
- android:id="@+id/list_container"
+ <fragment
+ android:id="@+id/list_fragment"
+ class="com.android.contacts.list.DefaultContactBrowseListFragment"
android:layout_height="0dip"
android:layout_width="match_parent"
- android:layout_weight="1" />
+ android:layout_weight="1"
+ />
</LinearLayout>
<view
@@ -67,10 +69,12 @@
ex:enterAnimation="@android:animator/fade_in"
ex:exitAnimation="@android:animator/fade_out"
ex:animationDuration="200">
- <FrameLayout
- android:id="@+id/detail_container"
+ <fragment
+ android:id="@+id/detail_fragment"
+ class="com.android.contacts.detail.ContactDetailFragment"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="match_parent"
+ />
</view>
</com.android.contacts.widget.InterpolatingLayout>
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 4ff9e63..4fb835a 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -34,7 +34,6 @@
import com.android.contacts.list.ContactsRequest;
import com.android.contacts.list.ContactsUnavailableFragment;
import com.android.contacts.list.CustomContactListFilterActivity;
-import com.android.contacts.list.DefaultContactBrowseListFragment;
import com.android.contacts.list.DirectoryListLoader;
import com.android.contacts.list.OnContactBrowserActionListener;
import com.android.contacts.list.OnContactsUnavailableActionListener;
@@ -79,7 +78,7 @@
/**
* Displays a list to browse contacts. For xlarge screens, this also displays a detail-pane on
- * the right
+ * the right.
*/
public class ContactBrowserActivity extends ContactsActivity
implements View.OnCreateContextMenuListener, ActionBarAdapter.Listener,
@@ -144,13 +143,14 @@
if (fragment instanceof ContactBrowseListFragment) {
mListFragment = (ContactBrowseListFragment)fragment;
mListFragment.setOnContactListActionListener(new ContactBrowserActionListener());
- if (!mHasActionBar) {
+ if (!getWindow().hasFeature(Window.FEATURE_ACTION_BAR)) {
mListFragment.setContextMenuAdapter(
new ContactBrowseListContextMenuAdapter(mListFragment));
}
} else if (fragment instanceof ContactDetailFragment) {
mDetailFragment = (ContactDetailFragment)fragment;
mDetailFragment.setListener(mDetailFragmentListener);
+ mContactContentDisplayed = true;
} else if (fragment instanceof ContactsUnavailableFragment) {
mContactsUnavailableFragment = (ContactsUnavailableFragment)fragment;
mContactsUnavailableFragment.setProviderStatusLoader(mProviderStatusLoader);
@@ -201,7 +201,6 @@
if (createContentView) {
setContentView(R.layout.contact_browser);
- mContactContentDisplayed = findViewById(R.id.detail_container) != null;
}
if (mRequest.getActionCode() == ContactsRequest.ACTION_VIEW_CONTACT
@@ -299,32 +298,15 @@
mSearchMode = false;
}
+ mListFragment.setContactsRequest(mRequest);
+ configureListFragmentForRequest();
+
} else if (mHasActionBar) {
mSearchMode = mActionBarAdapter.isSearchMode();
}
- if (mListFragment == null) {
- mListFragment = new DefaultContactBrowseListFragment();
- mListFragment.setContactsRequest(mRequest);
-
- getFragmentManager().openTransaction()
- .replace(R.id.list_container, mListFragment)
- .commit();
- }
-
- if (fromRequest) {
- configureListFragmentForRequest();
- }
-
configureListFragment();
- if (mContactContentDisplayed && mDetailFragment == null) {
- mDetailFragment = new ContactDetailFragment();
- getFragmentManager().openTransaction()
- .replace(R.id.detail_container, mDetailFragment)
- .commit();
- }
-
invalidateOptionsMenu();
}
@@ -732,7 +714,7 @@
}
public boolean isCustomFilterChangeable() {
- return mRequest.getActionCode() == ContactsRequest.ACTION_DEFAULT;
+ return mRequest != null && mRequest.getActionCode() == ContactsRequest.ACTION_DEFAULT;
}
@Override
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index d76ad38..903127b 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -498,11 +498,13 @@
}
public void setSectionHeaderDisplayEnabled(boolean flag) {
- mSectionHeaderDisplayEnabled = flag;
- if (mAdapter != null) {
- mAdapter.setSectionHeaderDisplayEnabled(flag);
+ if (mSectionHeaderDisplayEnabled != flag) {
+ mSectionHeaderDisplayEnabled = flag;
+ if (mAdapter != null) {
+ mAdapter.setSectionHeaderDisplayEnabled(flag);
+ }
+ configureVerticalScrollbar();
}
- configureVerticalScrollbar();
}
public boolean isSectionHeaderDisplayEnabled() {
@@ -510,8 +512,10 @@
}
public void setVisibleScrollbarEnabled(boolean flag) {
- mVisibleScrollbarEnabled = flag;
- configureVerticalScrollbar();
+ if (mVisibleScrollbarEnabled != flag) {
+ mVisibleScrollbarEnabled = flag;
+ configureVerticalScrollbar();
+ }
}
public boolean isVisibleScrollbarEnabled() {
@@ -519,7 +523,10 @@
}
public void setVerticalScrollbarPosition(int position) {
- this.mVerticalScrollbarPosition = position;
+ if (mVerticalScrollbarPosition != position) {
+ mVerticalScrollbarPosition = position;
+ configureVerticalScrollbar();
+ }
}
private void configureVerticalScrollbar() {