Skip to content
Permalink
Browse files

Fixed PreferencesActivity for appcompat-v7

  • Loading branch information...
schnatterer committed Jun 15, 2015
1 parent 457a50b commit b1ea9f80cb2bb4cdc57de0bdcf29e7e4a47b7289
@@ -32,14 +32,12 @@
import javax.inject.Inject;

import roboguice.RoboGuice;
import roboguice.activity.RoboPreferenceActivity;
import roboguice.activity.RoboAppCompatPreferenceActivity;
import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate;
import android.view.MenuItem;

/**
@@ -55,7 +53,7 @@
* @author schnatterer
*
*/
public class NusicPreferencesActivity extends RoboPreferenceActivity {
public class NusicPreferencesActivity extends RoboAppCompatPreferenceActivity {
/**
* Key to the resulting intent's extras that contains the boolean value that
* informs if a check for new releases must be performed.<br/>
@@ -71,8 +69,6 @@

private TimePeriodPreferenceChangedListener timePeriodPreferenceChangedListener = new TimePeriodPreferenceChangedListener();

private AppCompatDelegate mDelegate;

@Inject
private PreferencesService preferencesService;
@Inject
@@ -181,13 +177,6 @@ protected void onPause() {
.unregisterOnSharedPreferenceChangeListener(timePeriodPreferenceChangedListener);
}

private AppCompatDelegate getDelegate() {
if (mDelegate == null) {
mDelegate = AppCompatDelegate.create(this, null);
}
return mDelegate;
}

@Override
public void finish() {
// Prepare data intent
@@ -208,16 +197,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
getDelegate().onPostCreate(savedInstanceState);
}

public ActionBar getSupportActionBar() {
return getDelegate().getSupportActionBar();
}

/**
* Listens for a change in the
* {@link PreferencesServiceSharedPreferences#KEY_DOWNLOAD_RELEASES_TIME_PERIOD}
@@ -0,0 +1,127 @@
/*
* Copyright (C) 2014 The Android Open Source Project
* Copyright (C) 2015 Johannes Schnatterer (derived from RoboPreferenceActivity)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package roboguice.activity;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;

/**
* A {@link RoboPreferenceActivity} which implements and proxies the necessary
* calls to be used with AppCompat.
*
* This technique can be used with an {@link android.app.Activity} class, not
* just {@link android.preference.PreferenceActivity}.
*/
public abstract class RoboAppCompatPreferenceActivity extends
RoboPreferenceActivity {
private AppCompatDelegate mDelegate;

@Override
protected void onCreate(Bundle savedInstanceState) {
getDelegate().installViewFactory();
getDelegate().onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
getDelegate().onPostCreate(savedInstanceState);
}

public ActionBar getSupportActionBar() {
return getDelegate().getSupportActionBar();
}

public void setSupportActionBar(@Nullable Toolbar toolbar) {
getDelegate().setSupportActionBar(toolbar);
}

@Override
public MenuInflater getMenuInflater() {
return getDelegate().getMenuInflater();
}

@Override
public void setContentView(@LayoutRes int layoutResID) {
getDelegate().setContentView(layoutResID);
}

@Override
public void setContentView(View view) {
getDelegate().setContentView(view);
}

@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
getDelegate().setContentView(view, params);
}

@Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
getDelegate().addContentView(view, params);
}

@Override
protected void onPostResume() {
super.onPostResume();
getDelegate().onPostResume();
}

@Override
protected void onTitleChanged(CharSequence title, int color) {
super.onTitleChanged(title, color);
getDelegate().setTitle(title);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
getDelegate().onConfigurationChanged(newConfig);
}

@Override
protected void onStop() {
super.onStop();
getDelegate().onStop();
}

@Override
protected void onDestroy() {
super.onDestroy();
getDelegate().onDestroy();
}

public void invalidateOptionsMenu() {
getDelegate().invalidateOptionsMenu();
}

private AppCompatDelegate getDelegate() {
if (mDelegate == null) {
mDelegate = AppCompatDelegate.create(this, null);
}
return mDelegate;
}
}
@@ -157,6 +157,7 @@
<exclude>**/privacyPolicy.html</exclude>
<exclude>**/project.properties</exclude>
<exclude>**/lint.xml</exclude>
<exclude>src/main/java/roboguice/activity/RoboAppCompatPreferenceActivity.java</exclude>
</excludes>
</configuration>
<dependencies>

0 comments on commit b1ea9f8

Please sign in to comment.
You can’t perform that action at this time.