diff --git a/src/com/android/settings/panel/PanelContent.java b/src/com/android/settings/panel/PanelContent.java index 56704694f99..60b9ed7ab18 100644 --- a/src/com/android/settings/panel/PanelContent.java +++ b/src/com/android/settings/panel/PanelContent.java @@ -55,7 +55,6 @@ public interface PanelContent extends Instrumentable { */ List getSlices(); - /** * @return an {@link Intent} to the full content in Settings that is summarized by the Panel. * @@ -64,4 +63,15 @@ public interface PanelContent extends Instrumentable { *

*/ Intent getSeeMoreIntent(); + + /** + * @return an {@link Intent} to the go to the target activity. + * + *

+ * A common usage is to go back to previous panel. + *

+ */ + default Intent getHeaderIconIntent() { + return null; + } } diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java index 8fda894adaf..0f467582443 100644 --- a/src/com/android/settings/panel/PanelFragment.java +++ b/src/com/android/settings/panel/PanelFragment.java @@ -201,6 +201,9 @@ public class PanelFragment extends Fragment { mTitleIcon.setImageIcon(icon.toIcon(getContext())); mHeaderTitle.setText(mPanel.getTitle()); mHeaderSubtitle.setText(mPanel.getSubTitle()); + if (mPanel.getHeaderIconIntent() != null) { + mTitleIcon.setOnClickListener(getHeaderIconListener()); + } } mSeeMoreButton.setOnClickListener(getSeeMoreListener()); mDoneButton.setOnClickListener(getCloseListener()); @@ -381,4 +384,12 @@ public class PanelFragment extends Fragment { getActivity().finish(); }; } + + @VisibleForTesting + View.OnClickListener getHeaderIconListener() { + return (v) -> { + final FragmentActivity activity = getActivity(); + activity.startActivity(mPanel.getHeaderIconIntent()); + }; + } }