我需要从OnClickListener
的{{1}}获取变量“position”。
onItemClick
这个“位置”将用于另一个班级
我尝试了gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{ //Actions based on user's click }
方式,但它说的是
SharedPreferences
需要一些帮助。
答案 0 :(得分:1)
根据您所说的错误,我认为您使用的是PreferenceManager
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// This statement gives an error.
// here "this" represents an instance of OnItemClickListener (Anonymous inner class)
PreferenceManager.getDefaultSharedPreferences(this);
// but You need an instance of Context. So you can refer Activity here
PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
}
});
答案 1 :(得分:0)
将位置分享到另一个类的简单方法您将把位置存储在另一个变量中..
静态变量并在另一类中使用此变量
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
ActivityName.VariableName = position;
}
您可以在程序中的任何位置使用此变量...
然后你可以像这样发送上下文...
getDefaultSharedPreferences(ActivityName.this);
(or)
getDefaultSharedPreferences(getApplicationContext());
一切顺利......
答案 2 :(得分:0)
要使用SharedPreferences
,请确保您传递的上下文不是OnItemClickListener()
。
您正在努力保存“位置”,以便在另一个class
或Activity
中使用。通过context
的{{1}}可以帮助您使用Activity
。
如果来自另一个SharedPreferences
的{{1}}不是class
,您可以使用activity
将任意constructor
的{{1}}传递给context
activity
1}}。
尝试实现这些功能,它有助于减少代码并实现可重用性:
class
我将它用于/**
* Used to save data in preferences
* @param context
* @param key
* @param value
*/
public static void saveDataToPreferences(Context context, String key, String value) {
SharedPreferences prefs = context.getSharedPreferences("Your package name",
Context.MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
/**
* Used to retrieve data from preferences
* @param context
* @param key
* @return
*/
public static String getDataFromPreferences(Context context, String key) {
SharedPreferences prefs = context.getSharedPreferences("Your package name",
Context.MODE_PRIVATE);
return prefs.getString(key, "default value");
}
,非常有效。您可以传递位置值和常量字符串,例如。保存和检索相同的“位置”。我使用SharedPreferences
作为通用数据类型,您可以根据您的要求定义它。
String
答案 3 :(得分:0)
在点击时将值分配给公共静态变量,并在下一个活动中使用它。