import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SearchView;
+import androidx.core.view.MenuProvider;
import androidx.fragment.app.ListFragment;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.AsyncTaskLoader;
import androidx.loader.content.Loader;
-public class SelectedApplicationsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Pair<List<SelectedApplicationEntry>, List<String>>>, SearchView.OnQueryTextListener
+public class SelectedApplicationsListFragment extends ListFragment implements MenuProvider, LoaderManager.LoaderCallbacks<Pair<List<SelectedApplicationEntry>, List<String>>>, SearchView.OnQueryTextListener
{
private SelectedApplicationsAdapter mAdapter;
private SortedSet<String> mSelection;
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
- setHasOptionsMenu(true);
+ requireActivity().addMenuProvider(this, getViewLifecycleOwner());
final boolean readOnly = getActivity().getIntent().getBooleanExtra(VpnProfileDataSource.KEY_READ_ONLY, false);
getListView().setChoiceMode(readOnly ? ListView.CHOICE_MODE_NONE : ListView.CHOICE_MODE_MULTIPLE);
}
@Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
{
MenuItem item = menu.add(R.string.search);
item.setIcon(android.R.drawable.ic_menu_search);
- item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
SearchView sv = new SearchView(getActivity());
sv.setOnQueryTextListener(this);
item.setActionView(sv);
+ }
- super.onCreateOptionsMenu(menu, inflater);
+ @Override
+ public boolean onMenuItemSelected(@NonNull MenuItem menuItem)
+ {
+ return false;
}
@Override
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.core.view.MenuProvider;
import androidx.fragment.app.ListFragment;
+import androidx.lifecycle.Lifecycle;
import androidx.loader.app.LoaderManager;
import androidx.loader.app.LoaderManager.LoaderCallbacks;
import androidx.loader.content.AsyncTaskLoader;
import androidx.loader.content.Loader;
-public class TrustedCertificateListFragment extends ListFragment implements LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
+public class TrustedCertificateListFragment extends ListFragment implements MenuProvider, LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
{
public static final String EXTRA_CERTIFICATE_SOURCE = "certificate_source";
private OnTrustedCertificateSelectedListener mListener;
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
- setHasOptionsMenu(true);
+ requireActivity().addMenuProvider(this, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
setEmptyText(getString(R.string.no_certificates));
}
@Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
{
MenuItem item = menu.add(R.string.search);
item.setIcon(android.R.drawable.ic_menu_search);
- item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
SearchView sv = new SearchView(getActivity());
sv.setOnQueryTextListener(this);
item.setActionView(sv);
}
+ @Override
+ public boolean onMenuItemSelected(@NonNull MenuItem menuItem)
+ {
+ return false;
+ }
+
@Override
public boolean onQueryTextSubmit(String query)
{ /* already handled when the text changes */
import java.util.Set;
import java.util.UUID;
+import androidx.annotation.NonNull;
+import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
-public class VpnProfileListFragment extends Fragment
+public class VpnProfileListFragment extends Fragment implements MenuProvider
{
private static final String SELECTED_KEY = "SELECTED";
if (!mReadOnly)
{
+ requireActivity().addMenuProvider(this, getViewLifecycleOwner());
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mListView.setMultiChoiceModeListener(mVpnProfileSelected);
}
if (!mReadOnly)
{
- setHasOptionsMenu(true);
-
ArrayList<Integer> selected = null;
if (savedInstanceState != null)
{
}
@Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
{
- inflater.inflate(R.menu.profile_list, menu);
+ menuInflater.inflate(R.menu.profile_list, menu);
}
@Override
- public void onPrepareOptionsMenu(Menu menu)
+ public void onPrepareMenu(@NonNull Menu menu)
{
final MenuItem addProfile = menu.findItem(R.id.add_profile);
if (addProfile != null)
}
@Override
- public boolean onOptionsItemSelected(MenuItem item)
+ public boolean onMenuItemSelected(@NonNull MenuItem menuItem)
{
- if (item.getItemId() == R.id.add_profile)
+ if (menuItem.getItemId() == R.id.add_profile)
{
Intent connectionIntent = new Intent(getActivity(),
VpnProfileDetailActivity.class);
startActivity(connectionIntent);
return true;
}
- return super.onOptionsItemSelected(item);
+ return false;
}
private final OnItemClickListener mVpnProfileClicked = new OnItemClickListener()