mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Prevent crash when AbstractActivityChartFragment is wrongly extended
Some fragments are extending AbstractActivityChartFragment when they should not, since they are not in an instance of ChartsHost. This will make them crash occasionally when switching dates in the actual charts. Prevent this, but log at error level.
This commit is contained in:
+13
@@ -17,6 +17,7 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -73,6 +74,18 @@ public class ActivitySummariesChartFragment extends AbstractActivityChartFragmen
|
||||
private int startTime;
|
||||
private int endTime;
|
||||
|
||||
@Override
|
||||
protected void onReceive(final Context context, final Intent intent) {
|
||||
// FIXME: We need to override this, or we crash
|
||||
// This class should be refactored not to extend AbstractActivityChartFragment
|
||||
// java.lang.ClassCastException: nodomain.freeyourgadget.gadgetbridge.activities.ActivitySummaryDetail cannot be cast to nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsHost
|
||||
// at nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment.getChartsHost(AbstractChartFragment.java:164)
|
||||
// at nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment.getStartDate(AbstractChartFragment.java:176)
|
||||
// at nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment.onReceive(AbstractChartFragment.java:215)
|
||||
// at nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment$1.onReceive(AbstractChartFragment.java:82)
|
||||
// at androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:319)
|
||||
}
|
||||
|
||||
public void setDateAndGetData(@Nullable File trackFile, GBDevice gbDevice, long startTime, long endTime) {
|
||||
this.trackFile = trackFile;
|
||||
this.startTime = (int) startTime;
|
||||
|
||||
+6
@@ -205,6 +205,12 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
|
||||
}
|
||||
|
||||
protected void onReceive(Context context, Intent intent) {
|
||||
final FragmentActivity fragmentActivity = requireActivity();
|
||||
if (fragmentActivity instanceof ChartsHost) {
|
||||
LOG.error("{} is not an instance of ChartsHost, preventing crash", fragmentActivity.getClass());
|
||||
return;
|
||||
}
|
||||
|
||||
String action = intent.getAction();
|
||||
if (ChartsHost.REFRESH.equals(action)) {
|
||||
updateDateInfo(getStartDate(), getEndDate());
|
||||
|
||||
Reference in New Issue
Block a user