Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4d06f80 authored by James Lemieux's avatar James Lemieux
Browse files

Avoid NPE when rotating after deleting timer

Bug: 25780110
Change-Id: I454ee709d296c7a2860281b2e981476608df1e57
parent ad9d3e6d
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -56,14 +56,10 @@ public class TimerItemFragment extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        final TimerItem view = (TimerItem) inflater.inflate(R.layout.timer_item, container, false);

        final View resetAddButton = view.findViewById(R.id.reset_add);
        resetAddButton.setOnClickListener(new ResetAddListener());

        final View labelView = view.findViewById(R.id.timer_label);
        labelView.setOnClickListener(new EditLabelListener());

        view.findViewById(R.id.reset_add).setOnClickListener(new ResetAddListener());
        view.findViewById(R.id.timer_label).setOnClickListener(new EditLabelListener());
        view.update(getTimer());

        return view;
    }

+22 −8
Original line number Diff line number Diff line
@@ -78,10 +78,25 @@ class TimerPagerAdapter extends PagerAdapter implements TimerListener {
        }

        final Timer timer = getTimers().get(position);
        final TimerItemFragment fragment = TimerItemFragment.newInstance(timer);

        // Search for the existing fragment by tag.
        final String tag = getClass().getSimpleName() + timer.getId();
        TimerItemFragment fragment = (TimerItemFragment) mFragmentManager.findFragmentByTag(tag);

        if (fragment != null) {
            // Reattach the existing fragment.
            mCurrentTransaction.attach(fragment);
        } else {
            // Create and add a new fragment.
            fragment = TimerItemFragment.newInstance(timer);
            mCurrentTransaction.add(container.getId(), fragment, tag);
        }

        if (fragment != mCurrentPrimaryItem) {
            setItemVisible(fragment, false);
        }

        mFragments.put(timer.getId(), fragment);
        mCurrentTransaction.add(container.getId(), fragment);

        return fragment;
    }
@@ -128,6 +143,11 @@ class TimerPagerAdapter extends PagerAdapter implements TimerListener {
        notifyDataSetChanged();
    }

    @Override
    public void timerRemoved(Timer timer) {
        notifyDataSetChanged();
    }

    @Override
    public void timerUpdated(Timer before, Timer after) {
        final TimerItemFragment timerItemFragment = mFragments.get(after.getId());
@@ -136,12 +156,6 @@ class TimerPagerAdapter extends PagerAdapter implements TimerListener {
        }
    }

    @Override
    public void timerRemoved(Timer timer) {
        mFragments.remove(timer.getId());
        notifyDataSetChanged();
    }

    /**
     * @return {@code true} if at least one timer is in a state requiring continuous updates
     */