Niedzielski has uploaded a new change for review.
https://gerrit.wikimedia.org/r/277433
Change subject: Hygiene: collapse platform and compat Fragments
......................................................................
Hygiene: collapse platform and compat Fragments
Consolidate platform and compatibility Fragments. No functional changes
intended.
Change-Id: Ib8a5740a8b10bd8f13d6fa18d5f06ded9b68d653
---
M app/src/main/java/org/wikipedia/activity/CallbackFragment.java
D app/src/main/java/org/wikipedia/activity/CompatSingleFragmentActivity.java
A app/src/main/java/org/wikipedia/activity/FragmentUtil.java
D app/src/main/java/org/wikipedia/activity/PlatformSingleFragmentActivity.java
R app/src/main/java/org/wikipedia/activity/SingleFragmentActivity.java
M app/src/main/java/org/wikipedia/crash/CrashReportActivity.java
M app/src/main/java/org/wikipedia/crash/CrashReportFragment.java
M app/src/main/java/org/wikipedia/model/EnumCodeMap.java
M app/src/main/java/org/wikipedia/settings/DeveloperSettingsActivity.java
M app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
M app/src/main/java/org/wikipedia/settings/PreferenceLoaderFragment.java
M app/src/main/java/org/wikipedia/settings/SettingsActivity.java
M app/src/main/java/org/wikipedia/settings/SettingsFragment.java
M app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowActivity.java
M app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowFragment.java
15 files changed, 83 insertions(+), 83 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/33/277433/1
diff --git a/app/src/main/java/org/wikipedia/activity/CallbackFragment.java
b/app/src/main/java/org/wikipedia/activity/CallbackFragment.java
index 6d2b139..c35aa62 100644
--- a/app/src/main/java/org/wikipedia/activity/CallbackFragment.java
+++ b/app/src/main/java/org/wikipedia/activity/CallbackFragment.java
@@ -1,18 +1,7 @@
package org.wikipedia.activity;
import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-public class CallbackFragment<T extends FragmentCallback> extends Fragment {
- @Nullable protected T getCallback() {
- if (getTargetFragment() instanceof FragmentCallback) {
- //noinspection unchecked
- return (T) getTargetFragment();
- } else if (getActivity() instanceof FragmentCallback) {
- //noinspection unchecked
- return (T) getActivity();
- } else {
- return null;
- }
- }
+public interface CallbackFragment<T extends FragmentCallback> {
+ @Nullable T getCallback();
}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/activity/CompatSingleFragmentActivity.java
b/app/src/main/java/org/wikipedia/activity/CompatSingleFragmentActivity.java
deleted file mode 100644
index 767a942..0000000
--- a/app/src/main/java/org/wikipedia/activity/CompatSingleFragmentActivity.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.wikipedia.activity;
-
-/** Boilerplate for a {@link android.support.v4.app.FragmentActivity}
containing a single stack of
- * compatibility {@link android.support.v4.app.Fragment}s. */
-public abstract class CompatSingleFragmentActivity<T extends
CallbackFragment<? extends FragmentCallback>>
- extends BaseSingleFragmentActivity<T> {
- @Override
- protected void addFragment(T fragment) {
- getSupportFragmentManager().beginTransaction().add(getContainerId(),
fragment).commit();
- }
-
- @Override
- protected T getFragment() {
- //noinspection unchecked
- return (T)
getSupportFragmentManager().findFragmentById(getContainerId());
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/wikipedia/activity/FragmentUtil.java
b/app/src/main/java/org/wikipedia/activity/FragmentUtil.java
new file mode 100644
index 0000000..17a9440
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/activity/FragmentUtil.java
@@ -0,0 +1,26 @@
+package org.wikipedia.activity;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+
+public final class FragmentUtil {
+ @Nullable public static FragmentCallback getCallback(@NonNull Fragment
fragment) {
+ return getCallback(fragment, FragmentCallback.class);
+ }
+
+ @Nullable public static <T extends FragmentCallback> T
getCallback(@NonNull Fragment fragment,
+
@NonNull Class<T> callback) {
+ if (callback.isInstance(fragment.getTargetFragment())) {
+ //noinspection unchecked
+ return (T) fragment.getTargetFragment();
+ } else if (callback.isInstance(fragment.getActivity())) {
+ //noinspection unchecked
+ return (T) fragment.getActivity();
+ } else {
+ return null;
+ }
+ }
+
+ private FragmentUtil() { }
+}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/activity/PlatformSingleFragmentActivity.java
b/app/src/main/java/org/wikipedia/activity/PlatformSingleFragmentActivity.java
deleted file mode 100644
index 7a5ff84..0000000
---
a/app/src/main/java/org/wikipedia/activity/PlatformSingleFragmentActivity.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.wikipedia.activity;
-
-import android.support.v4.app.Fragment;
-
-/** Boilerplate for a {@link android.support.v4.app.FragmentActivity}
containing a single stack of
- * platform {@link Fragment}s. */
-public abstract class PlatformSingleFragmentActivity<T extends Fragment>
extends BaseSingleFragmentActivity<T> {
- @Override
- protected void addFragment(Fragment fragment) {
- getSupportFragmentManager().beginTransaction().add(getContainerId(),
fragment).commit();
- }
-
- @Override
- protected T getFragment() {
- //noinspection unchecked
- return (T)
getSupportFragmentManager().findFragmentById(getContainerId());
- }
-}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/activity/BaseSingleFragmentActivity.java
b/app/src/main/java/org/wikipedia/activity/SingleFragmentActivity.java
similarity index 67%
rename from
app/src/main/java/org/wikipedia/activity/BaseSingleFragmentActivity.java
rename to app/src/main/java/org/wikipedia/activity/SingleFragmentActivity.java
index 928d57e..672b583 100644
--- a/app/src/main/java/org/wikipedia/activity/BaseSingleFragmentActivity.java
+++ b/app/src/main/java/org/wikipedia/activity/SingleFragmentActivity.java
@@ -3,13 +3,17 @@
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.LayoutRes;
+import android.support.v4.app.Fragment;
import android.view.MenuItem;
import org.wikipedia.R;
-/** Boilerplate for a {@link android.support.v4.app.FragmentActivity}
containing a single stack of
- * Fragments. */
-public abstract class BaseSingleFragmentActivity<T> extends
ThemedActionBarActivity {
+/**
+ * Boilerplate for a {@link android.support.v4.app.FragmentActivity}
containing a single stack of
+ * Fragments.
+ */
+public abstract class SingleFragmentActivity<T extends Fragment &
CallbackFragment<? extends FragmentCallback>>
+ extends ThemedActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -25,13 +29,17 @@
return ActivityUtil.defaultOnOptionsItemSelected(this, item)
|| super.onOptionsItemSelected(item);
}
-
- protected abstract void addFragment(T fragment);
+ protected void addFragment(T fragment) {
+ getSupportFragmentManager().beginTransaction().add(getContainerId(),
fragment).commit();
+ }
protected abstract T createFragment();
/** @return The Fragment added to the stack. */
- protected abstract T getFragment();
+ protected T getFragment() {
+ //noinspection unchecked
+ return (T)
getSupportFragmentManager().findFragmentById(getContainerId());
+ }
/** @return The resource layout to inflate which must contain a {@link
android.view.ViewGroup}
* whose ID is {@link #getContainerId()}. */
@@ -49,4 +57,4 @@
protected boolean isFragmentCreated() {
return getFragment() != null;
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/org/wikipedia/crash/CrashReportActivity.java
b/app/src/main/java/org/wikipedia/crash/CrashReportActivity.java
index d84aaaf..4fc3489 100644
--- a/app/src/main/java/org/wikipedia/crash/CrashReportActivity.java
+++ b/app/src/main/java/org/wikipedia/crash/CrashReportActivity.java
@@ -5,9 +5,9 @@
import org.wikipedia.WikipediaApp;
import org.wikipedia.activity.ActivityUtil;
-import org.wikipedia.activity.CompatSingleFragmentActivity;
+import org.wikipedia.activity.SingleFragmentActivity;
-public class CrashReportActivity extends
CompatSingleFragmentActivity<CrashReportFragment>
+public class CrashReportActivity extends
SingleFragmentActivity<CrashReportFragment>
implements CrashReportFragmentCallback {
@Override
protected CrashReportFragment createFragment() {
diff --git a/app/src/main/java/org/wikipedia/crash/CrashReportFragment.java
b/app/src/main/java/org/wikipedia/crash/CrashReportFragment.java
index dc3ac3a..e23bf32 100644
--- a/app/src/main/java/org/wikipedia/crash/CrashReportFragment.java
+++ b/app/src/main/java/org/wikipedia/crash/CrashReportFragment.java
@@ -6,6 +6,7 @@
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -13,9 +14,11 @@
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
import org.wikipedia.activity.CallbackFragment;
+import org.wikipedia.activity.FragmentUtil;
import org.wikipedia.drawable.DrawableUtil;
-public class CrashReportFragment extends
CallbackFragment<CrashReportFragmentCallback> {
+public class CrashReportFragment extends Fragment
+ implements CallbackFragment<CrashReportFragmentCallback> {
public static CrashReportFragment newInstance() {
return new CrashReportFragment();
}
@@ -36,6 +39,10 @@
return view;
}
+ @Override @Nullable public CrashReportFragmentCallback getCallback() {
+ return FragmentUtil.getCallback(this,
CrashReportFragmentCallback.class);
+ }
+
private void setIconColor(@NonNull Drawable icon, @ColorInt int color) {
DrawableUtil.setTint(icon, color);
}
diff --git a/app/src/main/java/org/wikipedia/model/EnumCodeMap.java
b/app/src/main/java/org/wikipedia/model/EnumCodeMap.java
index 93ba953..c295510 100644
--- a/app/src/main/java/org/wikipedia/model/EnumCodeMap.java
+++ b/app/src/main/java/org/wikipedia/model/EnumCodeMap.java
@@ -6,8 +6,8 @@
public class EnumCodeMap<T extends Enum<T> & EnumCode> {
@NonNull private final SparseArray<T> map;
- public EnumCodeMap(Class<T> clazz) {
- map = codeToEnumMap(clazz);
+ public EnumCodeMap(@NonNull Class<T> enumeration) {
+ map = codeToEnumMap(enumeration);
}
@NonNull public T get(int code) {
@@ -18,7 +18,7 @@
return status;
}
- private SparseArray<T> codeToEnumMap(Class<T> enumeration) {
+ @NonNull private SparseArray<T> codeToEnumMap(@NonNull Class<T>
enumeration) {
SparseArray<T> ret = new SparseArray<>();
for (T value : enumeration.getEnumConstants()) {
ret.put(value.code(), value);
diff --git
a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsActivity.java
b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsActivity.java
index 33d0643..9cb8f70 100644
--- a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsActivity.java
+++ b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsActivity.java
@@ -3,9 +3,9 @@
import android.content.Context;
import android.content.Intent;
-import org.wikipedia.activity.PlatformSingleFragmentActivity;
+import org.wikipedia.activity.SingleFragmentActivity;
-public class DeveloperSettingsActivity extends
PlatformSingleFragmentActivity<DeveloperSettingsFragment> {
+public class DeveloperSettingsActivity extends
SingleFragmentActivity<DeveloperSettingsFragment> {
public static Intent newIntent(Context context) {
return new Intent(context, DeveloperSettingsActivity.class);
}
diff --git
a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
index be2b51e..5df3cd5 100644
--- a/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
+++ b/app/src/main/java/org/wikipedia/settings/DeveloperSettingsFragment.java
@@ -1,7 +1,5 @@
package org.wikipedia.settings;
-import android.os.Bundle;
-
public class DeveloperSettingsFragment extends PreferenceLoaderFragment {
public static DeveloperSettingsFragment newInstance() {
return new DeveloperSettingsFragment();
@@ -11,9 +9,5 @@
public void loadPreferences() {
PreferenceLoader preferenceLoader = new
DeveloperSettingsPreferenceLoader(this);
preferenceLoader.loadPreferences();
- }
-
- @Override
- public void onCreatePreferences(Bundle bundle, String s) {
}
}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/settings/PreferenceLoaderFragment.java
b/app/src/main/java/org/wikipedia/settings/PreferenceLoaderFragment.java
index 53a7936..9ef6a8e 100644
--- a/app/src/main/java/org/wikipedia/settings/PreferenceLoaderFragment.java
+++ b/app/src/main/java/org/wikipedia/settings/PreferenceLoaderFragment.java
@@ -1,13 +1,22 @@
package org.wikipedia.settings;
import android.os.Bundle;
+import android.support.annotation.Nullable;
import android.support.v7.preference.PreferenceFragmentCompat;
-/*package*/ abstract class PreferenceLoaderFragment extends
PreferenceFragmentCompat
- implements PreferenceLoader {
+import org.wikipedia.activity.CallbackFragment;
+import org.wikipedia.activity.FragmentCallback;
+import org.wikipedia.activity.FragmentUtil;
+
+abstract class PreferenceLoaderFragment extends PreferenceFragmentCompat
+ implements PreferenceLoader, CallbackFragment<FragmentCallback> {
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ public void onCreatePreferences(Bundle bundle, String s) {
loadPreferences();
}
+
+ @Nullable
+ @Override public FragmentCallback getCallback() {
+ return FragmentUtil.getCallback(this);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/org/wikipedia/settings/SettingsActivity.java
b/app/src/main/java/org/wikipedia/settings/SettingsActivity.java
index 8558515..5356157 100644
--- a/app/src/main/java/org/wikipedia/settings/SettingsActivity.java
+++ b/app/src/main/java/org/wikipedia/settings/SettingsActivity.java
@@ -1,8 +1,8 @@
package org.wikipedia.settings;
-import org.wikipedia.activity.PlatformSingleFragmentActivity;
+import org.wikipedia.activity.SingleFragmentActivity;
-public class SettingsActivity extends
PlatformSingleFragmentActivity<SettingsFragment> {
+public class SettingsActivity extends SingleFragmentActivity<SettingsFragment>
{
public static final int ACTIVITY_REQUEST_SHOW_SETTINGS = 1;
public static final int ACTIVITY_RESULT_LANGUAGE_CHANGED = 1;
diff --git a/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
b/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
index afc10dc..c92d948 100644
--- a/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
+++ b/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
@@ -19,10 +19,6 @@
}
@Override
- public void onCreatePreferences(Bundle bundle, String s) {
- }
-
- @Override
public void loadPreferences() {
SettingsPreferenceLoader preferenceLoader = new
SettingsPreferenceLoader(this);
preferenceLoader.loadPreferences();
@@ -68,4 +64,4 @@
private void invalidateOptionsMenu() {
getActivity().supportInvalidateOptionsMenu();
}
-}
+}
\ No newline at end of file
diff --git
a/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowActivity.java
b/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowActivity.java
index cec5388..d00b62f 100644
--- a/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowActivity.java
+++ b/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowActivity.java
@@ -4,10 +4,10 @@
import android.content.Intent;
import android.support.annotation.NonNull;
-import org.wikipedia.activity.CompatSingleFragmentActivity;
+import org.wikipedia.activity.SingleFragmentActivity;
import org.wikipedia.activity.FragmentCallback;
-public class UserOptionRowActivity extends
CompatSingleFragmentActivity<UserOptionRowFragment>
+public class UserOptionRowActivity extends
SingleFragmentActivity<UserOptionRowFragment>
implements FragmentCallback {
public static Intent newIntent(@NonNull Context context) {
return new Intent().setClass(context, UserOptionRowActivity.class);
diff --git
a/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowFragment.java
b/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowFragment.java
index 52c39e7..0eb40b2 100644
--- a/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowFragment.java
+++ b/app/src/main/java/org/wikipedia/useroption/ui/UserOptionRowFragment.java
@@ -6,6 +6,7 @@
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
@@ -20,6 +21,7 @@
import org.wikipedia.R;
import org.wikipedia.activity.CallbackFragment;
import org.wikipedia.activity.FragmentCallback;
+import org.wikipedia.activity.FragmentUtil;
import org.wikipedia.database.CursorAdapterLoaderCallback;
import org.wikipedia.useroption.database.UserOptionDatabaseTable;
import org.wikipedia.useroption.database.UserOptionRow;
@@ -30,7 +32,7 @@
import static org.wikipedia.Constants.USER_OPTION_ROW_FRAGMENT_LOADER_ID;
-public class UserOptionRowFragment extends CallbackFragment<FragmentCallback> {
+public class UserOptionRowFragment extends Fragment implements
CallbackFragment<FragmentCallback> {
@Bind(R.id.fragment_user_option_list) ListView list;
public static UserOptionRowFragment newInstance() {
@@ -73,6 +75,10 @@
}
}
+ @Nullable @Override public FragmentCallback getCallback() {
+ return FragmentUtil.getCallback(this);
+ }
+
private static class LoaderCallback extends CursorAdapterLoaderCallback {
LoaderCallback(@NonNull Context context, @NonNull CursorAdapter
adapter) {
super(context, adapter);
--
To view, visit https://gerrit.wikimedia.org/r/277433
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib8a5740a8b10bd8f13d6fa18d5f06ded9b68d653
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits