Skip to content

Commit a24cbdf

Browse files
authored
Menu option deprecation fix (#1425)
1 parent 2a7587b commit a24cbdf

File tree

6 files changed

+64
-34
lines changed

6 files changed

+64
-34
lines changed

database/app/src/main/java/com/google/firebase/quickstart/database/java/MainFragment.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
import androidx.annotation.NonNull;
1212
import androidx.annotation.Nullable;
13+
import androidx.core.view.MenuHost;
14+
import androidx.core.view.MenuProvider;
1315
import androidx.fragment.app.Fragment;
1416
import androidx.navigation.fragment.NavHostFragment;
1517
import androidx.viewpager2.adapter.FragmentStateAdapter;
@@ -22,10 +24,12 @@
2224
import com.google.firebase.quickstart.database.java.listfragments.MyTopPostsFragment;
2325
import com.google.firebase.quickstart.database.java.listfragments.RecentPostsFragment;
2426

25-
public class MainFragment extends Fragment {
27+
public class MainFragment extends Fragment implements MenuProvider {
2628

2729
private FragmentMainBinding binding;
2830

31+
private MenuHost menuHost;
32+
2933
@Nullable
3034
@Override
3135
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -36,7 +40,10 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
3640
@Override
3741
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
3842
super.onViewCreated(view, savedInstanceState);
39-
setHasOptionsMenu(true);
43+
44+
// MenuProvider
45+
menuHost = requireActivity();
46+
menuHost.addMenuProvider(this);
4047

4148
// Create the adapter that will return a fragment for each section
4249
FragmentStateAdapter mPagerAdapter = new FragmentStateAdapter(getParentFragmentManager(),
@@ -71,20 +78,21 @@ public int getItemCount() {
7178
}
7279

7380
@Override
74-
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
75-
inflater.inflate(R.menu.menu_main, menu);
81+
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
82+
menuInflater.inflate(R.menu.menu_main, menu);
7683
}
7784

7885
@Override
79-
public boolean onOptionsItemSelected(MenuItem item) {
80-
int i = item.getItemId();
86+
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
87+
int i = menuItem.getItemId();
8188
if (i == R.id.action_logout) {
8289
FirebaseAuth.getInstance().signOut();
8390
NavHostFragment.findNavController(this)
8491
.navigate(R.id.action_MainFragment_to_SignInFragment);
8592
return true;
8693
} else {
87-
return super.onOptionsItemSelected(item);
94+
return false;
8895
}
8996
}
97+
9098
}

database/app/src/main/java/com/google/firebase/quickstart/database/kotlin/MainFragment.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import android.view.MenuInflater
77
import android.view.MenuItem
88
import android.view.View
99
import android.view.ViewGroup
10+
import androidx.core.view.MenuHost
11+
import androidx.core.view.MenuProvider
1012
import androidx.fragment.app.Fragment
1113
import androidx.navigation.fragment.findNavController
1214
import androidx.viewpager2.adapter.FragmentStateAdapter
@@ -19,7 +21,7 @@ import com.google.firebase.quickstart.database.kotlin.listfragments.MyPostsFragm
1921
import com.google.firebase.quickstart.database.kotlin.listfragments.MyTopPostsFragment
2022
import com.google.firebase.quickstart.database.kotlin.listfragments.RecentPostsFragment
2123

22-
class MainFragment : Fragment() {
24+
class MainFragment : Fragment(), MenuProvider {
2325
private var _binding: FragmentMainBinding? = null
2426
private val binding get() = _binding!!
2527

@@ -32,7 +34,10 @@ class MainFragment : Fragment() {
3234

3335
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
3436
super.onViewCreated(view, savedInstanceState)
35-
setHasOptionsMenu(true)
37+
38+
// MenuProvider
39+
val menuHost: MenuHost = requireActivity() as MenuHost
40+
menuHost.addMenuProvider(this)
3641

3742
// Create the adapter that will return a fragment for each section
3843
pagerAdapter = object : FragmentStateAdapter(parentFragmentManager, viewLifecycleOwner.lifecycle) {
@@ -59,17 +64,17 @@ class MainFragment : Fragment() {
5964
}
6065
}
6166

62-
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
63-
inflater.inflate(R.menu.menu_main, menu)
67+
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
68+
menuInflater.inflate(R.menu.menu_main, menu)
6469
}
6570

66-
override fun onOptionsItemSelected(item: MenuItem): Boolean {
67-
return if (item.itemId == R.id.action_logout) {
71+
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
72+
return if (menuItem.itemId == R.id.action_logout) {
6873
Firebase.auth.signOut()
6974
findNavController().navigate(R.id.action_MainFragment_to_SignInFragment)
7075
true
7176
} else {
72-
super.onOptionsItemSelected(item)
77+
false
7378
}
7479
}
7580

database/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# Specifies the JVM arguments used for the daemon process.
1111
# The setting is particularly useful for tweaking memory settings.
1212
org.gradle.jvmargs=-Xmx1536m
13-
13+
android.useAndroidX=true
1414
# When configured, Gradle will run in incubating parallel mode.
1515
# This option should only be used with decoupled projects. More details, visit
1616
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

firestore/app/src/main/java/com/google/firebase/example/fireeats/java/MainFragment.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.Intent;
66
import android.os.Bundle;
77
import android.util.Log;
8+
import android.view.ContextMenu;
89
import android.view.LayoutInflater;
910
import android.view.Menu;
1011
import android.view.MenuInflater;
@@ -18,6 +19,8 @@
1819
import androidx.annotation.StringRes;
1920
import androidx.appcompat.app.AlertDialog;
2021
import androidx.core.text.HtmlCompat;
22+
import androidx.core.view.MenuHost;
23+
import androidx.core.view.MenuProvider;
2124
import androidx.fragment.app.Fragment;
2225
import androidx.lifecycle.ViewModelProvider;
2326
import androidx.navigation.fragment.NavHostFragment;
@@ -52,7 +55,8 @@
5255

5356
public class MainFragment extends Fragment implements
5457
FilterDialogFragment.FilterListener,
55-
RestaurantAdapter.OnRestaurantSelectedListener, View.OnClickListener {
58+
RestaurantAdapter.OnRestaurantSelectedListener, View.OnClickListener,
59+
MenuProvider {
5660

5761
private static final String TAG = "MainActivity";
5862

@@ -68,10 +72,11 @@ public class MainFragment extends Fragment implements
6872

6973
private MainActivityViewModel mViewModel;
7074

75+
private MenuHost menuHost;
76+
7177
@Nullable
7278
@Override
7379
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
74-
setHasOptionsMenu(true);
7580
mBinding = FragmentMainBinding.inflate(inflater, container, false);
7681
return mBinding.getRoot();
7782
}
@@ -82,6 +87,10 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
8287
mBinding.filterBar.setOnClickListener(this);
8388
mBinding.buttonClearFilter.setOnClickListener(this);
8489

90+
// MenuProvider
91+
menuHost = requireActivity();
92+
menuHost.addMenuProvider(this);
93+
8594
// View model
8695
mViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);
8796

@@ -153,23 +162,22 @@ public void onStop() {
153162
}
154163

155164
@Override
156-
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
157-
inflater.inflate(R.menu.menu_main, menu);
158-
super.onCreateOptionsMenu(menu, inflater);
165+
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
166+
menuInflater.inflate(R.menu.menu_main, menu);
159167
}
160168

161169
@Override
162-
public boolean onOptionsItemSelected(MenuItem item) {
170+
public boolean onMenuItemSelected(@NonNull MenuItem item) {
163171
switch (item.getItemId()) {
164172
case R.id.menu_add_items:
165173
onAddItemsClicked();
166-
break;
174+
return true;
167175
case R.id.menu_sign_out:
168176
AuthUI.getInstance().signOut(requireContext());
169177
startSignIn();
170-
break;
178+
return true;
171179
}
172-
return super.onOptionsItemSelected(item);
180+
return false;
173181
}
174182

175183
private void onSignInResult(FirebaseAuthUIAuthenticationResult result) {

firestore/app/src/main/java/com/google/firebase/example/fireeats/kotlin/MainFragment.kt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import android.view.ViewGroup
1212
import androidx.annotation.StringRes
1313
import androidx.appcompat.app.AlertDialog
1414
import androidx.core.text.HtmlCompat
15+
import androidx.core.view.MenuHost
16+
import androidx.core.view.MenuProvider
1517
import androidx.fragment.app.Fragment
1618
import androidx.lifecycle.ViewModelProvider
1719
import androidx.navigation.fragment.findNavController
@@ -38,7 +40,8 @@ import com.google.firebase.ktx.Firebase
3840

3941
class MainFragment : Fragment(),
4042
FilterDialogFragment.FilterListener,
41-
RestaurantAdapter.OnRestaurantSelectedListener {
43+
RestaurantAdapter.OnRestaurantSelectedListener,
44+
MenuProvider {
4245

4346
lateinit var firestore: FirebaseFirestore
4447
lateinit var query: Query
@@ -50,7 +53,6 @@ class MainFragment : Fragment(),
5053
private lateinit var viewModel: MainActivityViewModel
5154

5255
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
53-
setHasOptionsMenu(true)
5456
binding = FragmentMainBinding.inflate(inflater, container, false);
5557
return binding.root;
5658
}
@@ -92,6 +94,10 @@ class MainFragment : Fragment(),
9294
}
9395
}
9496

97+
// MenuProvider
98+
val menuHost: MenuHost = requireActivity() as MenuHost
99+
menuHost.addMenuProvider(this)
100+
95101
binding.recyclerRestaurants.layoutManager = LinearLayoutManager(context)
96102
binding.recyclerRestaurants.adapter = adapter
97103

@@ -123,20 +129,23 @@ class MainFragment : Fragment(),
123129
adapter.stopListening()
124130
}
125131

126-
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
127-
inflater.inflate(R.menu.menu_main, menu)
128-
return super.onCreateOptionsMenu(menu, inflater)
132+
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
133+
menuInflater.inflate(R.menu.menu_main, menu)
129134
}
130135

131-
override fun onOptionsItemSelected(item: MenuItem): Boolean {
132-
when (item.itemId) {
133-
R.id.menu_add_items -> onAddItemsClicked()
136+
override fun onMenuItemSelected(item: MenuItem): Boolean {
137+
return when (item.itemId) {
138+
R.id.menu_add_items -> {
139+
onAddItemsClicked()
140+
true
141+
}
134142
R.id.menu_sign_out -> {
135143
AuthUI.getInstance().signOut(requireContext())
136144
startSignIn()
145+
true
137146
}
147+
else -> false
138148
}
139-
return super.onOptionsItemSelected(item)
140149
}
141150

142151
private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) {

firestore/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ org.gradle.jvmargs=-Xmx1536m
1818

1919
# Don't use the gradle build cache since this sample uses experimental SDKs
2020
android.enableBuildCache=false
21-
android.useAndroidX=true
21+
android.useAndroidX=true

0 commit comments

Comments
 (0)