Sitelet https://github.com/google/hover/commit/bab6c3feffac02bbd30637322e89d778bfc00004
Skip to content
This repository was archived by the owner on Jan 10, 2023. It is now read-only.

Commit bab6c3f

Browse files
author
Matt Carroll
committed
Fixed issue where Hello World screens would duplicate themselves.
1 parent fbcabe2 commit bab6c3f

2 files changed

Lines changed: 39 additions & 10 deletions

File tree

‎hoverdemo-helloworld/src/main/java/io/mattcarroll/hover/hoverdemo/helloworld/HelloWorldHoverMenuService.java‎

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,27 @@ protected HoverMenuAdapter createHoverMenuAdapter() {
2525
private static class HelloWorldHoverMenuAdapter implements HoverMenuAdapter {
2626

2727
private final Context mContext;
28+
private final View mTab1;
29+
private final HoverMenuScreen mScreen1;
30+
private final View mTab2;
31+
private final HoverMenuScreen mScreen2;
2832

2933
public HelloWorldHoverMenuAdapter(@NonNull Context context) {
3034
mContext = context.getApplicationContext();
35+
36+
mTab1 = createTabView();
37+
mScreen1 = new HoverMenuScreen(mContext, "Screen 1");
38+
39+
mTab2 = createTabView();
40+
mScreen2 = new HoverMenuScreen(mContext, "Screen 2");
41+
}
42+
43+
private View createTabView() {
44+
int tabPadding = mContext.getResources().getDimensionPixelSize(R.dimen.tab_padding);
45+
ImageView imageView = new ImageView(mContext);
46+
imageView.setImageResource(R.drawable.tab_background);
47+
imageView.setPadding(tabPadding, tabPadding, tabPadding, tabPadding);
48+
return imageView;
3149
}
3250

3351
@Override
@@ -42,21 +60,23 @@ public long getTabId(int position) {
4260

4361
@Override
4462
public View getTabView(int position) {
45-
int tabPadding = mContext.getResources().getDimensionPixelSize(R.dimen.tab_padding);
46-
47-
ImageView imageView = new ImageView(mContext);
48-
imageView.setImageResource(R.drawable.tab_background);
49-
imageView.setPadding(tabPadding, tabPadding, tabPadding, tabPadding);
50-
return imageView;
63+
switch (position) {
64+
case 0:
65+
return mTab1;
66+
case 1:
67+
return mTab2;
68+
default:
69+
throw new RuntimeException("Hover menu tab was requested for non-existent screen.");
70+
}
5171
}
5272

5373
@Override
5474
public NavigatorContent getNavigatorContent(int position) {
5575
switch (position) {
5676
case 0:
57-
return new HoverMenuScreen(mContext, "Screen 1");
77+
return mScreen1;
5878
case 1:
59-
return new HoverMenuScreen(mContext, "Screen 2");
79+
return mScreen2;
6080
default:
6181
throw new RuntimeException("Hover menu screen was requested for non-existent screen.");
6282
}

‎hoverdemo-helloworld/src/main/java/io/mattcarroll/hover/hoverdemo/helloworld/HoverMenuScreen.java‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,30 @@ public class HoverMenuScreen implements NavigatorContent {
1616

1717
private final Context mContext;
1818
private final String mPageTitle;
19+
private final View mWholeScreen;
1920

2021
public HoverMenuScreen(@NonNull Context context, @NonNull String pageTitle) {
2122
mContext = context.getApplicationContext();
2223
mPageTitle = pageTitle;
24+
mWholeScreen = createScreenView();
2325
}
2426

2527
@NonNull
26-
@Override
27-
public View getView() {
28+
private View createScreenView() {
2829
TextView wholeScreen = new TextView(mContext);
2930
wholeScreen.setText("Screen: " + mPageTitle);
3031
wholeScreen.setGravity(Gravity.CENTER);
3132
return wholeScreen;
3233
}
3334

35+
// Make sure that this method returns the SAME View. It should NOT create a new View each time
36+
// that it is invoked.
37+
@NonNull
38+
@Override
39+
public View getView() {
40+
return mWholeScreen;
41+
}
42+
3443
@Override
3544
public void onShown(@NonNull Navigator navigator) {
3645
// No-op.

0 commit comments

Comments
 (0)