Reputation: 818
The app I am developing has an activity that extends SherlockFragmentActivity
. I would like to use the preferences api in order to easily add preferences to the activity. Since I would like to support api level 8 and above, I have to extend the activity from the class SherlockPreferenceActivity
.
The problem is that the activity needs to show a dialog. The dialog extends SherlockDialogFragment
. The show()
method of the dialog needs two parameters: a FragmentManager
object and a String
tag.
In order to get the FragmentManager
object, i used to call the getSupportFragmentManager()
method of the activity. This method is missing from SherlockPreferenceActivity
. I tried to use getFragmentManager()
but Eclipse says that
The method show(FragmentManager, String) in the type DialogFragment is not applicable for the arguments (FragmentManager, String)
How can I show the dialog fragment from SherlockPreferenceActivity
?
Upvotes: 6
Views: 1446
Reputation: 91
Try using SherlockDialogFragment.getSherlockActivity().getSupportFragmentManager()
.
Example:
mySherlockDialogFragment.show(mySherlockDialogFragment.getSherlockActivity().getSupportFragmentManager(), "my_tag");
Upvotes: 0
Reputation: 5063
You should use Shared Preferences
rather than using the PreferenceActivity
. Declare these references in a separate helper class rather than extending it to an Activity.This gives you the flexibility of creating a custom layout.
Example:
public class SharePrefManager {
// Shared Preferences
SharedPreferences pref;
// Editor for Shared preferences
Editor editor;
// Context
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
// Sharedpref file name
private static final String PREF_NAME = "selfhelppref";
//Your configurable fields
public static final String KEY_PREF1 = "pref1";
public static final String KEY_PREF2 = "pref2";
public static final String KEY_PREF3 = "pref3";
public SharePrefManager(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
//Setter function for configurable field
public void setPref(String key, String value){
editor.putString(key, value);
}
//Getter function for configurable field
public String getPref(String key){
return editor.getString(key);
}
}
Referencing on your activity
SharePrefManager SM = new SharePrefManager(this);
SM.setPref(SM.KEY_PREF1, "name");
String value = SM.getPref(SM.KEY_PREF1);
Upvotes: 0