Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

strict mode violation exception prevention #89

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ public abstract class AbstractPowerMenu<E, T extends MenuBaseAdapter<E>>
protected boolean fixedHeight = false;

protected boolean isShowing = false;
private Context mContext;

@Px protected int contentViewPadding;
private int defaultPosition;
Expand Down Expand Up @@ -190,7 +191,8 @@ protected void initialize(Context context, Boolean isMaterial) {
setOnMenuItemClickListener(onMenuItemClickListener);

contentViewPadding = ConvertUtil.convertDpToPixel(10, context);
MenuPreferenceManager.initialize(context);
MenuPreferenceManager.initialize();
mContext = context;
}

/**
Expand Down Expand Up @@ -1102,7 +1104,7 @@ public String getPreferenceName() {
*/
public int getPreferencePosition(int defaultPosition) {
return MenuPreferenceManager.getInstance()
.getPosition(getAdapter().getPreferenceName(), defaultPosition);
.getPosition(mContext, getAdapter().getPreferenceName(), defaultPosition);
}

/**
Expand All @@ -1113,7 +1115,7 @@ public int getPreferencePosition(int defaultPosition) {
public void setPreferencePosition(int defaultPosition) {
MenuPreferenceManager instance = MenuPreferenceManager.getInstance();
if (instance != null && getPreferenceName() != null) {
instance.setPosition(getPreferenceName(), defaultPosition);
instance.setPosition(mContext, getPreferenceName(), defaultPosition);
}
}

Expand All @@ -1129,7 +1131,7 @@ private void setPreferenceName(@NonNull String preferenceName) {
/** clears the preference name of PowerMenu. */
public void clearPreference() {
if (getAdapter().getPreferenceName() != null) {
MenuPreferenceManager.getInstance().clearPosition(getAdapter().getPreferenceName());
MenuPreferenceManager.getInstance().clearPosition(mContext, getAdapter().getPreferenceName());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ protected void initialize(@NonNull Context context, Boolean isMaterial) {
} else {
binding = LayoutPowerMenuLibrarySkydovesBinding.inflate(layoutInflater, null, false);
}
this.adapter = (E) (new MenuBaseAdapter<>(menuListView));
this.adapter = (E) (new MenuBaseAdapter<>(menuListView, context));
super.initialize(context, isMaterial);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.skydoves.powermenu;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
Expand All @@ -31,16 +32,19 @@ public class MenuBaseAdapter<T> extends BaseAdapter implements IMenuItem<T> {

private int selectedPosition = -1;
private String preferenceName;
private Context mContext;

public MenuBaseAdapter() {
public MenuBaseAdapter(Context context) {
super();
this.itemList = new ArrayList<>();
mContext = context;
}

public MenuBaseAdapter(ListView listView) {
public MenuBaseAdapter(ListView listView, Context context) {
super();
this.itemList = new ArrayList<>();
this.listView = listView;
mContext = context;
}

@Override
Expand Down Expand Up @@ -100,7 +104,7 @@ public void setSelectedPosition(int position) {

MenuPreferenceManager instance = MenuPreferenceManager.getInstance();
if (instance != null && preferenceName != null) {
instance.setPosition(preferenceName, position);
instance.setPosition(mContext, preferenceName, position);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,23 @@ class MenuPreferenceManager {

private static final String position = "_POSITION";
private static MenuPreferenceManager menuPreferenceManager;
private final SharedPreferences sharedPreferences;
private static SharedPreferences sharedPreferences;

private MenuPreferenceManager(Context context) {
sharedPreferences =
context.getSharedPreferences("com.skydoves.powermenu", Context.MODE_PRIVATE);
public static SharedPreferences getSharedPrefsInstance(Context context)
{
if (sharedPreferences == null) {
sharedPreferences = context.getSharedPreferences("com.skydoves.powermenu", Context.MODE_PRIVATE);
}
return sharedPreferences;
}

/**
* initialize the {@link MenuPreferenceManager} instance.
*
* @param context context.
*
*/
protected static void initialize(Context context) {
menuPreferenceManager = new MenuPreferenceManager(context);
protected static void initialize() {
menuPreferenceManager = new MenuPreferenceManager();
}

/**
Expand All @@ -54,12 +57,13 @@ protected static MenuPreferenceManager getInstance() {
/**
* gets the saved menu position from preference.
*
* @param context
* @param name preference name.
* @param defaultPosition default preference menu position.
* @return the saved menu position.
*/
protected int getPosition(String name, int defaultPosition) {
return sharedPreferences.getInt(name, defaultPosition);
protected int getPosition(Context context, String name, int defaultPosition) {
return getSharedPrefsInstance(context).getInt(name, defaultPosition);
}

/**
Expand All @@ -68,16 +72,16 @@ protected int getPosition(String name, int defaultPosition) {
* @param name preference name.
* @param position preference menu position.
*/
protected void setPosition(String name, int position) {
sharedPreferences.edit().putInt(name, position).apply();
protected void setPosition(Context context, String name, int position) {
getSharedPrefsInstance(context).edit().putInt(name, position).apply();
}

/**
* clears the saved color from preference.
*
* @param name preference name.
*/
protected void clearPosition(String name) {
sharedPreferences.edit().remove(name).apply();
protected void clearPosition(Context context, String name) {
getSharedPrefsInstance(context).edit().remove(name).apply();
}
}