diff options
author | Domingos Lopes <domingos86lopes+github@gmail.com> | 2016-03-28 03:34:07 -0400 |
---|---|---|
committer | Domingos Lopes <domingos86lopes+github@gmail.com> | 2016-04-23 21:39:57 -0400 |
commit | e70f4d5389fc21fc00e3ecdda0e86f07873883ba (patch) | |
tree | 8f662b7a87da349ba13b0d445217b1d2bdeb0abc /app | |
parent | c915366c7b813e1d51f8bd992d334f6e7e675212 (diff) | |
download | AntennaPod-e70f4d5389fc21fc00e3ecdda0e86f07873883ba.zip |
fix media router button still showing when disabled
Diffstat (limited to 'app')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java | 30 | ||||
-rw-r--r-- | app/src/main/res/menu/cast_enabled.xml | 2 |
2 files changed, 20 insertions, 12 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java index 0ce90eae3..82cf0eed1 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/CastEnabledActivity.java @@ -4,11 +4,12 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.Menu; -import android.view.MenuItem; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.cast.CastManager; +import de.danoeh.antennapod.core.cast.SwitchableMediaRouteActionProvider; import de.danoeh.antennapod.core.preferences.UserPreferences; /** @@ -17,17 +18,18 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; */ public abstract class CastEnabledActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { + public static final String TAG = "CastEnabledActivity"; protected CastManager mCastManager; - private int castUICounter; - protected MenuItem mMediaRouteMenuItem; - protected boolean isCastEnabled; + private volatile int castUICounter; + protected SwitchableMediaRouteActionProvider mMediaRouteActionProvider; + protected volatile boolean isCastEnabled; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - PreferenceManager.getDefaultSharedPreferences(this). + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()). registerOnSharedPreferenceChangeListener(this); castUICounter = 0; @@ -36,6 +38,13 @@ public abstract class CastEnabledActivity extends AppCompatActivity } @Override + protected void onDestroy() { + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()) + .unregisterOnSharedPreferenceChangeListener(this); + super.onDestroy(); + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.cast_enabled, menu); @@ -45,9 +54,9 @@ public abstract class CastEnabledActivity extends AppCompatActivity @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - mMediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item); - mMediaRouteMenuItem.setEnabled(isCastEnabled); - mMediaRouteMenuItem = mCastManager.addMediaRouterButton(menu, R.id.media_route_menu_item); + mMediaRouteActionProvider = mCastManager + .addMediaRouterButton(menu.findItem(R.id.media_route_menu_item)); + mMediaRouteActionProvider.setEnabled(isCastEnabled); return true; } @@ -71,13 +80,12 @@ public abstract class CastEnabledActivity extends AppCompatActivity } } - //This whole method might just be useless because it's assumed that the cast button - //won't show where the user actually has the power to change the preference. @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(UserPreferences.PREF_CAST_ENABLED)) { isCastEnabled = UserPreferences.isCastEnabled(); - mMediaRouteMenuItem.setEnabled(isCastEnabled); + Log.d(TAG, "onSharedPreferenceChanged(), isCastEnabled set to " + isCastEnabled); + mMediaRouteActionProvider.setEnabled(isCastEnabled); if (isCastEnabled) { //Test if activity is resumed but without UI counter incremented if (castUICounter==1) { diff --git a/app/src/main/res/menu/cast_enabled.xml b/app/src/main/res/menu/cast_enabled.xml index 25c10c88d..676f3ea1e 100644 --- a/app/src/main/res/menu/cast_enabled.xml +++ b/app/src/main/res/menu/cast_enabled.xml @@ -6,6 +6,6 @@ android:id="@+id/media_route_menu_item" android:title="@string/cast_media_route_menu_title" android:enabled="false" - custom:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" + custom:actionProviderClass="de.danoeh.antennapod.core.cast.SwitchableMediaRouteActionProvider" custom:showAsAction="always"/> </menu>
\ No newline at end of file |