If the PreferenceActivity is running in a single pane mode we are
not showing the headers and the breadcrumb area. However, when this
activity is restarted and has a saved state to restore we are trying
to use headers even in a single pane mode. As a result the breadcrumb
area is shown and the content is shifted to the bottom with an empty
space at the top. This change ignores the saved headers from the
saved instance state in a single pane mode. Note that in such a case
these headers are null anyway as we do not use them.
bug:11242762
Change-Id: I2828bc82762695d9c93fb4ca43933598a9b12b87
Fixed the Preference ordering code to consider the case where
two preferences might have the same order. In that case, it
falls back on the title to disambiguate. Previous behavior was
undefined (and technically not stable).
Expose the wifi display device address.
Perform wifi display scans every 10 seconds instead of every 15
to improve reponsiveness.
Make sure to define routes for wifi displays that we are connecting
to even if they are not yet paired. Simplified the logic for
adding and removing these routes to avoid possibly getting out
of sync and leaving stale routes behind.
Fix wifi display notification icon.
Bug: 11257292
Change-Id: I8ac15fb17d83758c0bdce80399e12723c367b83c
The breadcrumb section is used for a single pane mode for showing
the current user location. The breadcrumb should not be shown if
its title and subtitle are empty. The code in PreferenceActivity
onCreate updates the breadcrumb with the title and subtitle in
a single page mode but does not hide it if they are empty. This
change fixes that.
bug:11242762
Change-Id: Ib1ba9e8afd9d0ab2e85d78a65ca7c18489464f6d
ParcelFileDescriptors now carry an optional socket fd to communicate
close events. So, make sure that the correct creator is called when
reconstructing parceled PFDs.
Bug: 10759966
Change-Id: Ic6b9ffb8cb7af5f3a12440def595f74682231866
Refactors hasSpecifiedLayout to canRecycleLayout for readability's
sake. All boolean references to the method have been inverted.
BUG: 10079104
Change-Id: Ie6beda9f0b837f889a6cc6a80377349e98cc4883
Provides a way for PreferenceActivities to verify that they
aren't being launched with Fragments not meant to be attached to
them. Default implementation will fail verification for apps built
with KLP. This will not affect apps built for earlier targets.
Also, make sure that the class being instantiated is a Fragment and
not some random class.
Bug: 9901133
Change-Id: I564cd5168eabcadd7594ea8011e2081ebebfe063
Previously, setValue() was not calling notifyChanged(). This
prevented the summary from updating correctly. Now it calls
notifyChanged() the first time it's called and when the value
actually changes.
BUG: 9987962
Change-Id: I02dd4be6bde2969f39d30921a62a7ba908128e0e
Handle audio sample start/stop request in a handler
to avoid race conditions.
If a sample is active, do not ignore playback requests but
schedule a second attempt one second later. This is to avoid
ignoring a playback request if a sample is short or about to finish.
Bug: 8176776.
Change-Id: If2d5f7d469eba345af3f4771067a076a56f4bfed
Since list item clicks are delivered asynchronously, it's possible to
get click callbacks after the activity has already paused.
This should actually be blocked further up the event chain, ideally,
so that the list selection state is not out of sync with the application.
Bug: 9752185
Change-Id: I1058d64cba98e9093b462e2e581bdbccdace1420
When a PreferenceActivity is destroyed as soon as created,
there is a problematic case that messages for the activity are
sometimes left in the looper even after the activity is destroyed.
For example, by clearing user data of the selecting IME on
Settings apk, com.android.settings.Settings is re-launched
2 times successively. (Destory->Create->Destroy->Create)
Due to the left message, application crash can happen.
(NullPointerException at BackStackRecord.getBreadCrumbTitle())
Two cases have been found to observe this issue.
[Case 1]
1,Launch IME in advance.
2,Go to Settings >Apps > All and choose the IME package.
3,Click "Clear data"
4,Application crash occurs on com.android.settings.
[Case 2]
1,Go to Settings > Language&input > Language.
2,ListView dialog to choose language is shown.
3,Rotate the tablet 180 degree so that 90 degree rotation occurs twice.
4,Application crash occurs on com.android.settings.
Change-Id: I5ce36ea7a40ab7bc7737b7dca6641a4c3d77a480
In some situations the collection.sort() algoritm fails in compareTo()
with a: java.lang.IllegalArgumentException: Comparison method violates
its general contract!, due to a more strict validation of the compare
contract.
This strict validation was introduced in java 1.7.
See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6804124
This fix should prevent the sorting from crashing.
Change-Id: I64230e7f62f83c99d7a6274964bb2988ae843826
If you constructed a preference activity whose first header
didn't have a fragment, this would crash in two-pane mode
because it would try to use that header as the initially
selected header but not have a fragment to show.
We need to have a fragment for whatever header we switch to,
so the code now looks for the first header with a fragment
as the initial header.
Also added some error checks to throw more descriptive
exceptions on bad headers -- when there is no header at all
with a fragment, if the app tries to manually switch to a
header without a fragment.
Change-Id: Ia84221fcb2fe5755bb674e0606ac2a1fcde4cdc9
Expose PreferenceManager constructor and Preference#performClick so they can be
used by other UIs beyond the standard PreferenceActivity. Marked @hide so public
API is not affected.
Change-Id: Ieb4aecba5f86e40ff70f2b252458602e6b9ad1ee
TwoStatePreference would treat a default value of false as having no
effect since it matched the initial value of the internal field. This
caused asymmetric behavior around persistence and listener
notification when the default was true (persisted) vs. false (not
persisted).
Standard behavior for most Preferences is to persist the default
value. Make TwoStatePreference (CheckBoxPreference and
SwitchPreference) follow this pattern.
Bug 5722690
Change-Id: I8b3cf55efc5dfd573b511913b48ced017f0432d8
This is required by Settings app to be able to update the header list
if the accounts list changed.
Bug: 6685701
Change-Id: If27f83ec86fe1f3519a6e25de4e4fe4864133dc8
Bug: 6478079
Pointer assignment instead of copy was resulting in mValues being cleared
on next launch, since mValues became the same pointer as mNewValues.
Change-Id: I91014948e4f48056474b3ab31aab6d35e0ad69ca