[android] Fix NPE in PlacePage*.destroy()

Follow up 73391ad

Fixes #4606

Signed-off-by: Roman Tsisyk <roman@tsisyk.com>
This commit is contained in:
Roman Tsisyk 2023-03-01 11:21:02 +02:00
parent d4bf7a73da
commit f599894041
7 changed files with 48 additions and 48 deletions

View file

@ -37,7 +37,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
@Nullable
private WebView mWvBookmarkNote;
private PlacePageViewModel viewModel;
private PlacePageViewModel mViewModel;
private Bookmark currentBookmark;
@ -45,6 +45,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.place_page_bookmark_fragment, container, false);
}
@ -59,8 +60,7 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
final View editBookmarkBtn = mFrame.findViewById(R.id.tv__bookmark_edit);
editBookmarkBtn.setOnClickListener(this);
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
viewModel.getMapObject().observe(requireActivity(), this);
mViewModel.getMapObject().observe(requireActivity(), this);
}
private void initWebView()
@ -75,10 +75,10 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
}
@Override
public void onDestroy()
public void onDestroyView()
{
super.onDestroy();
viewModel.getMapObject().removeObserver(this);
super.onDestroyView();
mViewModel.getMapObject().removeObserver(this);
}
private void updateBookmarkDetails()
@ -154,6 +154,6 @@ public class PlacePageBookmarkFragment extends Fragment implements View.OnClickL
Bookmark updatedBookmark = BookmarkManager.INSTANCE.updateBookmarkPlacePage(bookmarkId);
if (updatedBookmark == null)
return;
viewModel.setMapObject(updatedBookmark);
mViewModel.setMapObject(updatedBookmark);
}
}

View file

@ -30,12 +30,13 @@ public final class PlacePageButtons extends Fragment implements Observer<List<Pl
private PlacePageButtonClickListener mItemListener;
private ViewGroup mButtonsContainer;
private PlacePageViewModel viewModel;
private PlacePageViewModel mViewModel;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.pp_buttons_fragment, container, false);
}
@ -49,9 +50,8 @@ public final class PlacePageButtons extends Fragment implements Observer<List<Pl
return windowInsets;
});
mMaxButtons = getResources().getInteger(R.integer.pp_buttons_max);
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
viewModel.getCurrentButtons().observe(requireActivity(), this);
createButtons(viewModel.getCurrentButtons().getValue());
mViewModel.getCurrentButtons().observe(requireActivity(), this);
createButtons(mViewModel.getCurrentButtons().getValue());
}
@Override
@ -69,10 +69,10 @@ public final class PlacePageButtons extends Fragment implements Observer<List<Pl
}
@Override
public void onDestroy()
public void onDestroyView()
{
super.onDestroy();
viewModel.getCurrentButtons().removeObserver(this);
super.onDestroyView();
mViewModel.getCurrentButtons().removeObserver(this);
}
private @NonNull

View file

@ -65,7 +65,7 @@ public class PlacePageController implements Initializable<Activity>,
private final AppCompatActivity mMwmActivity;
private final int mButtonsHeight;
private final int mMaxButtons;
private final PlacePageViewModel viewModel;
private final PlacePageViewModel mViewModel;
private int mPreviewHeight;
private int mFrameHeight;
private boolean mDeactivateMapSelection = true;
@ -135,7 +135,7 @@ public class PlacePageController implements Initializable<Activity>,
mButtonsHeight = (int) mMwmActivity.getResources()
.getDimension(R.dimen.place_page_buttons_height);
mMaxButtons = mMwmActivity.getResources().getInteger(R.integer.pp_buttons_max);
viewModel = new ViewModelProvider(mMwmActivity).get(PlacePageViewModel.class);
mViewModel = new ViewModelProvider(mMwmActivity).get(PlacePageViewModel.class);
ViewCompat.setOnApplyWindowInsetsListener(mPlacePage, (view, windowInsets) -> {
mCurrentWindowInsets = windowInsets;
@ -186,7 +186,7 @@ public class PlacePageController implements Initializable<Activity>,
@Nullable
public ArrayList<MenuBottomSheetItem> getMenuBottomSheetItems(String id)
{
final List<PlacePageButtons.ButtonType> currentItems = viewModel.getCurrentButtons().getValue();
final List<PlacePageButtons.ButtonType> currentItems = mViewModel.getCurrentButtons().getValue();
if (currentItems == null || currentItems.size() <= mMaxButtons)
return null;
ArrayList<MenuBottomSheetItem> items = new ArrayList<>();
@ -206,10 +206,10 @@ public class PlacePageController implements Initializable<Activity>,
{
mDeactivateMapSelection = true;
MapObject mapObject = (MapObject) data;
final MapObject previousMapObject = viewModel.getMapObject().getValue();
final MapObject previousMapObject = mViewModel.getMapObject().getValue();
// Only collapse the place page if the data is different from the one already available
mShouldCollapse = PlacePageUtils.isHiddenState(mPlacePageBehavior.getState()) || !MapObject.same(previousMapObject, mapObject);
viewModel.setMapObject(mapObject);
mViewModel.setMapObject(mapObject);
}
private void resetPlacePageHeightBounds()
@ -401,7 +401,7 @@ public class PlacePageController implements Initializable<Activity>,
.remove(placePageFragment)
.commitNow();
}
viewModel.setMapObject(null);
mViewModel.setMapObject(null);
}
private void createPlacePageFragments()
@ -459,7 +459,7 @@ public class PlacePageController implements Initializable<Activity>,
}
buttons.add(PlacePageButtons.ButtonType.SHARE);
}
viewModel.setCurrentButtons(buttons);
mViewModel.setCurrentButtons(buttons);
}
@Override
@ -480,13 +480,13 @@ public class PlacePageController implements Initializable<Activity>,
public void initialize(@Nullable Activity activity)
{
Objects.requireNonNull(activity);
viewModel.getMapObject().observe((MwmActivity) activity, this);
mViewModel.getMapObject().observe((MwmActivity) activity, this);
}
@Override
public void destroy()
{
viewModel.getMapObject().removeObserver(this);
mViewModel.getMapObject().removeObserver(this);
}
public interface SlideListener

View file

@ -56,7 +56,7 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
private View mWikimedia;
private TextView mTvWikimedia;
private PlacePageViewModel viewModel;
private PlacePageViewModel mViewModel;
private MapObject mMapObject;
private static void refreshMetadataOrHide(String metadata, View metaLayout, TextView metaTv)
@ -85,6 +85,7 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.place_page_links_fragment, container, false);
}
@ -134,8 +135,7 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
mLinePage.setOnClickListener((v) -> openUrl(Metadata.MetadataType.FMD_CONTACT_LINE));
mLinePage.setOnLongClickListener((v) -> copyUrl(mLinePage, Metadata.MetadataType.FMD_CONTACT_LINE));
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
viewModel.getMapObject().observe(requireActivity(), this);
mViewModel.getMapObject().observe(requireActivity(), this);
}
private boolean isSocialUsername(Metadata.MetadataType type)
@ -218,10 +218,10 @@ public class PlacePageLinksFragment extends Fragment implements Observer<MapObje
}
@Override
public void onDestroy()
public void onDestroyView()
{
super.onDestroy();
viewModel.getMapObject().removeObserver(this);
super.onDestroyView();
mViewModel.getMapObject().removeObserver(this);
}
@Override

View file

@ -38,12 +38,13 @@ public class PlacePageOpeningHoursFragment extends Fragment implements Observer<
private RecyclerView mFullWeekOpeningHours;
private PlaceOpeningHoursAdapter mOpeningHoursAdapter;
private PlacePageViewModel viewModel;
private PlacePageViewModel mViewModel;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.place_page_opening_hours_fragment, container, false);
}
@ -59,8 +60,7 @@ public class PlacePageOpeningHoursFragment extends Fragment implements Observer<
mOpeningHoursAdapter = new PlaceOpeningHoursAdapter();
mFullWeekOpeningHours.setAdapter(mOpeningHoursAdapter);
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
viewModel.getMapObject().observe(requireActivity(), this);
mViewModel.getMapObject().observe(requireActivity(), this);
}
private void refreshTodayNonBusinessTime(Timespan[] closedTimespans)
@ -92,7 +92,7 @@ public class PlacePageOpeningHoursFragment extends Fragment implements Observer<
private void refreshOpeningHours()
{
final String ohStr = viewModel.getMapObject()
final String ohStr = mViewModel.getMapObject()
.getValue()
.getMetadata(Metadata.MetadataType.FMD_OPEN_HOURS);
final Timetable[] timetables = OpeningHours.nativeTimetablesFromString(ohStr);
@ -180,10 +180,10 @@ public class PlacePageOpeningHoursFragment extends Fragment implements Observer<
}
@Override
public void onDestroy()
public void onDestroyView()
{
super.onDestroy();
viewModel.getMapObject().removeObserver(this);
super.onDestroyView();
mViewModel.getMapObject().removeObserver(this);
}
@Override

View file

@ -19,12 +19,13 @@ public class PlacePagePhoneFragment extends Fragment implements Observer<MapObje
{
private PlacePhoneAdapter mPhoneAdapter;
private PlacePageViewModel viewModel;
private PlacePageViewModel mViewModel;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.place_page_phone_fragment, container, false);
}
@ -36,15 +37,14 @@ public class PlacePagePhoneFragment extends Fragment implements Observer<MapObje
mPhoneAdapter = new PlacePhoneAdapter();
phoneRecycler.setAdapter(mPhoneAdapter);
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
viewModel.getMapObject().observe(requireActivity(), this);
mViewModel.getMapObject().observe(requireActivity(), this);
}
@Override
public void onDestroy()
public void onDestroyView()
{
super.onDestroy();
viewModel.getMapObject().removeObserver(this);
super.onDestroyView();
mViewModel.getMapObject().removeObserver(this);
}
@Override

View file

@ -25,7 +25,7 @@ public class PlacePageWikipediaFragment extends Fragment implements Observer<Map
private TextView mPlaceDescriptionView;
private PlacePageViewModel viewModel;
private PlacePageViewModel mViewModel;
private MapObject mMapObject;
@ -35,6 +35,7 @@ public class PlacePageWikipediaFragment extends Fragment implements Observer<Map
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
mViewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
return inflater.inflate(R.layout.place_page_wikipedia_fragment, container, false);
}
@ -52,8 +53,7 @@ public class PlacePageWikipediaFragment extends Fragment implements Observer<Map
mPlaceDescriptionView.setOnClickListener(v -> showDescriptionScreen());
mWiki = view.findViewById(R.id.ll__place_wiki);
viewModel = new ViewModelProvider(requireActivity()).get(PlacePageViewModel.class);
viewModel.getMapObject().observe(requireActivity(), this);
mViewModel.getMapObject().observe(requireActivity(), this);
}
private void showDescriptionScreen()
@ -97,10 +97,10 @@ public class PlacePageWikipediaFragment extends Fragment implements Observer<Map
}
@Override
public void onDestroy()
public void onDestroyView()
{
super.onDestroy();
viewModel.getMapObject().removeObserver(this);
super.onDestroyView();
mViewModel.getMapObject().removeObserver(this);
}
@Override