android :: SharedPreferences :: []=
Storevalue
as a serialized Json string
android :: SharedPreferences :: _auto_commit
Automatically commits every saving/removing instructions (true
by default)
android :: SharedPreferences :: _editor
android :: SharedPreferences :: add_bool
Set a key-value pair using aBool
value
android :: SharedPreferences :: add_float
Set a key-value pair using aFloat
value
android :: SharedPreferences :: add_int
Set a key-value pair using aInt
type value
android :: SharedPreferences :: add_long
Set a key-value pair using aInt
type value
android :: SharedPreferences :: add_string
Set a key-value pair using aString
type value
android :: SharedPreferences :: add_string_set
Set a key-value pair using aHashSet[JavaString]
value
android :: SharedPreferences :: all
Returns aHashMap
containing all entries or null
if there's no entries
android :: SharedPreferences :: auto_commit
Automatically commits every saving/removing instructions (true
by default)
android :: SharedPreferences :: auto_commit=
Automatically commits every saving/removing instructions (true
by default)
android :: SharedPreferences :: clear
Clears all the dictionnary entries in the specified file or the default fileandroid :: SharedPreferences :: commit
If auto_commit isfalse
, has to be called to save the data to persistant memory
android :: SharedPreferences :: destroy
Deallocate global references allocated by the SharedPreferences instanceandroid :: SharedPreferences :: editor
android :: SharedPreferences :: editor=
android :: SharedPreferences :: multi_process
Allows multiple processes to write into the sameSharedPreferences
file
android :: SharedPreferences :: multi_process_mode
File access modeandroid :: SharedPreferences :: remove
Removes the corresponding entry in the fileandroid :: SharedPreferences :: set_vars
android :: SharedPreferences :: setup
android :: SharedPreferences :: string_set
Returns theHashSet[JavaString]
value corresponding the given key or null
if none
android $ SharedPreferences :: SELF
Type of this instance, automatically specialized in every classandroid :: SharedPreferences :: []=
Storevalue
as a serialized Json string
android :: SharedPreferences :: _auto_commit
Automatically commits every saving/removing instructions (true
by default)
android :: SharedPreferences :: _editor
android :: SharedPreferences :: add_bool
Set a key-value pair using aBool
value
android :: SharedPreferences :: add_float
Set a key-value pair using aFloat
value
android :: SharedPreferences :: add_int
Set a key-value pair using aInt
type value
android :: SharedPreferences :: add_long
Set a key-value pair using aInt
type value
android :: SharedPreferences :: add_string
Set a key-value pair using aString
type value
android :: SharedPreferences :: add_string_set
Set a key-value pair using aHashSet[JavaString]
value
android :: SharedPreferences :: all
Returns aHashMap
containing all entries or null
if there's no entries
android :: SharedPreferences :: auto_commit
Automatically commits every saving/removing instructions (true
by default)
android :: SharedPreferences :: auto_commit=
Automatically commits every saving/removing instructions (true
by default)
core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
android :: SharedPreferences :: clear
Clears all the dictionnary entries in the specified file or the default fileandroid :: SharedPreferences :: commit
If auto_commit isfalse
, has to be called to save the data to persistant memory
core :: Object :: defaultinit
android :: SharedPreferences :: destroy
Deallocate global references allocated by the SharedPreferences instanceandroid :: SharedPreferences :: editor
android :: SharedPreferences :: editor=
core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
android :: SharedPreferences :: multi_process
Allows multiple processes to write into the sameSharedPreferences
file
android :: SharedPreferences :: multi_process_mode
File access modecore :: Object :: native_class_name
The class name of the object in CString format.core :: Object :: output_class_name
Display class name on stdout (debug only).android :: SharedPreferences :: remove
Removes the corresponding entry in the fileandroid :: SharedPreferences :: set_vars
android :: SharedPreferences :: setup
android :: SharedPreferences :: string_set
Returns theHashSet[JavaString]
value corresponding the given key or null
if none
# Provides services to save and load data for the android platform
class SharedPreferences
protected var shared_preferences: NativeSharedPreferences
protected var editor: NativeSharedPreferencesEditor
# Automatically commits every saving/removing instructions (`true` by default)
var auto_commit = true
protected init(app: App, file_name: String, mode: Int)
do
sys.jni_env.push_local_frame(1)
setup(file_name.to_java_string, mode, app.native_context)
sys.jni_env.pop_local_frame
end
# Restricts file access to the current application
init privately(app: App, file_name: String)
do
self.init(app, file_name, private_mode)
end
# File access mode
private fun private_mode: Int in "Java" `{ return Context.MODE_PRIVATE; `}
private fun set_vars(shared_pref: NativeSharedPreferences, editor: NativeSharedPreferencesEditor)
do
self.shared_preferences = shared_pref.new_global_ref
self.editor = editor.new_global_ref
end
private fun setup(file_name: JavaString, mode: Int, context: NativeContext) import set_vars in "Java" `{
SharedPreferences sp;
// Uses default SharedPreferences if file_name is an empty String
if (file_name.equals("")) {
Activity activity = (Activity)context;
sp = activity.getPreferences((int)mode);
} else {
sp = context.getSharedPreferences(file_name, (int)mode);
}
SharedPreferences.Editor editor = sp.edit();
SharedPreferences_set_vars(self, sp, editor);
`}
private fun commit_if_auto do if auto_commit then self.commit
# Returns true if there's an entry corresponding the given key
fun has(key: String): Bool
do
sys.jni_env.push_local_frame(2)
var return_value = shared_preferences.contains(key.to_java_string)
sys.jni_env.pop_local_frame
return return_value
end
# Returns a `HashMap` containing all entries or `null` if there's no entries
#
# User has to manage local stack deallocation himself
#
# ~~~nitish
# var foo = new HashMap[JavaString, JavaObject]
# # ...
# for key, value in foo do
# key.delete_local_ref
# value.delete_local_ref
# end
# ~~~
# *You should use Nit getters instead and get each value one by one*
fun all: nullable HashMap[JavaString, JavaObject]
do
var hashmap = shared_preferences.get_all
if hashmap.is_empty then return null
return hashmap
end
# Returns the `Bool` value corresponding the given key or `def_value` if none
# or if the value isn't of correct type
fun bool(key: String, def_value: Bool): Bool
do
sys.jni_env.push_local_frame(2)
var return_value = shared_preferences.get_boolean(key.to_java_string, def_value)
sys.jni_env.pop_local_frame
return return_value
end
# Returns the `Float` value corresponding the given key or `def_value` if none
# or if the value isn't of correct type
fun float(key: String, def_value: Float): Float
do
sys.jni_env.push_local_frame(2)
var return_value = shared_preferences.get_float(key.to_java_string, def_value)
sys.jni_env.pop_local_frame
return return_value
end
# Returns the `Int` value corresponding the given key or `def_value` if none
# or if the value isn't of correct type
# Be aware of possible `def_value` integer overflow as the Nit `Int` corresponds
# to Java `long`
fun int(key: String, def_value: Int): Int
do
sys.jni_env.push_local_frame(2)
var return_value = shared_preferences.get_int(key.to_java_string, def_value)
sys.jni_env.pop_local_frame
return return_value
end
# Returns the `Int` value corresponding the given key or `def_value` if none
# or if the value isn't of correct type
# Calls `getLong(key, value)` java method
# Nit `Int` is equivalent to Java `long` so that no integer overflow will occur
fun long(key: String, def_value: Int): Int
do
sys.jni_env.push_local_frame(2)
var return_value = shared_preferences.get_long(key.to_java_string, def_value)
sys.jni_env.pop_local_frame
return return_value
end
# Returns the `String` value corresponding the given key or `def_value` if none
# or if the value isn't of correct type
fun string(key: String, def_value: String): String
do
sys.jni_env.push_local_frame(3)
var java_return_value = shared_preferences.get_string(key.to_java_string,
def_value.to_java_string)
var nit_return_value = java_return_value.to_s
sys.jni_env.pop_local_frame
return nit_return_value
end
# Clears all the dictionnary entries in the specified file or the default file
# if none specified at instanciation
# Returns `self` allowing fluent programming
fun clear: SharedPreferences
do
editor.clear
commit_if_auto
return self
end
# If auto_commit is `false`, has to be called to save the data to persistant memory
fun commit: Bool
do
sys.jni_env.push_local_frame(1)
var return_value = editor.commit
sys.jni_env.pop_local_frame
return return_value
end
# Set a key-value pair using a `Bool` value
# Returns `self` allowing fluent programming
fun add_bool(key: String, value: Bool): SharedPreferences
do
sys.jni_env.push_local_frame(1)
editor.put_boolean(key.to_java_string, value)
sys.jni_env.pop_local_frame
commit_if_auto
return self
end
# Set a key-value pair using a `Float` value
# Returns `self` allowing fluent programming
#
# Be aware of possible loss of precision as Nit `Float` corresponds to Java `double`
# and the methods stores a Java `float`
fun add_float(key: String, value: Float): SharedPreferences
do
sys.jni_env.push_local_frame(1)
editor.put_float(key.to_java_string, value)
sys.jni_env.pop_local_frame
commit_if_auto
return self
end
# Set a key-value pair using a `Int` type value
# Returns `self` allowing fluent programming
#
# Be aware of possible integer overflow as the Nit `Int` corresponds to Java `long`
# and the methods stores a Java `int`
# *You might want to use add_long instead*
fun add_int(key: String, value: Int): SharedPreferences
do
sys.jni_env.push_local_frame(1)
editor.put_int(key.to_java_string, value)
sys.jni_env.pop_local_frame
commit_if_auto
return self
end
# Set a key-value pair using a `Int` type value
# Returns `self` allowing fluent programming
fun add_long(key: String, value: Int): SharedPreferences
do
sys.jni_env.push_local_frame(1)
editor.put_long(key.to_java_string, value)
sys.jni_env.pop_local_frame
commit_if_auto
return self
end
# Set a key-value pair using a `String` type value
# Returns `self` allowing fluent programming
fun add_string(key: String, value: String): SharedPreferences
do
sys.jni_env.push_local_frame(2)
editor.put_string(key.to_java_string, value.to_java_string)
sys.jni_env.pop_local_frame
commit_if_auto
return self
end
# Removes the corresponding entry in the file
# Returns `self` allowing fluent programming
fun remove(key: String): SharedPreferences
do
sys.jni_env.push_local_frame(1)
editor.remove(key.to_java_string)
sys.jni_env.pop_local_frame
commit_if_auto
return self
end
# Deallocate global references allocated by the SharedPreferences instance
fun destroy
do
self.shared_preferences.delete_global_ref
self.editor.delete_global_ref
end
# Store `value` as a serialized Json string
fun []=(key: String, value: nullable Serializable)
do
var serialized_string = new StringWriter
var serializer = new JsonSerializer(serialized_string)
serializer.serialize(value)
add_string(key, serialized_string.to_s)
commit_if_auto
end
# Retrieve an `Object` stored via `[]=` function
#
# Returns `null` if there's no serialized object corresponding to the given key
# Make sure that the serialized object is `serialize` or that it redefines
# the appropriate methods. Refer to `Serializable` documentation for further details
fun [](key: String): nullable Object
do
var serialized_string = self.string(key, "")
if serialized_string == "" then return null
var deserializer = new JsonDeserializer(serialized_string)
var deserialized = deserializer.deserialize
var errors = deserializer.errors
if errors.not_empty then
# An update may have broken the versioning compatibility
print_error "{class_name} error at deserialization: {errors.join(", ")}"
return null # Let's be safe
end
return deserialized
end
end
lib/android/shared_preferences/shared_preferences_api10.nit:145,1--411,3
redef class SharedPreferences
# Allows multiple processes to write into the same `SharedPreferences` file
init multi_process(app: App, file_name: String)
do
self.init(app, file_name, multi_process_mode)
end
# File access mode
private fun multi_process_mode: Int in "Java" `{ return Context.MODE_MULTI_PROCESS; `}
# Returns the `HashSet[JavaString]` value corresponding the given key or `null` if none
#
# User has to manage local stack deallocation himself
#
# ~~~nitish
# var a_hash_set = app.shared_preferences.string_set("A key")
# # ...
# for element in a_hash_set do element.delete_local_ref
# ~~~
fun string_set(key: String): HashSet[JavaString]
do
sys.jni_env.push_local_frame(3)
var return_value = shared_preferences.get_string_set(key.to_java_string)
sys.jni_env.pop_local_frame
return return_value
end
# Set a key-value pair using a `HashSet[JavaString]` value
# Returns self allowing fluent programming
#
# User has to manage local stack deallocation himself
#
# ~~~nitish
# var foo = new HashSet[JavaString]
# app.shared_preferences.add_string_set("A key", foo)
# for element in foo do element.delete_local_ref
# ~~~
fun add_string_set(key: String, value: HashSet[JavaString]): SharedPreferences
do
editor.put_string_set(key.to_java_string, value)
return self
end
end
lib/android/shared_preferences/shared_preferences_api11.nit:61,1--104,3