从数组加载和保存字符串的问题
Posted
技术标签:
【中文标题】从数组加载和保存字符串的问题【英文标题】:Problems with loading and saving strings from an array 【发布时间】:2013-05-07 17:04:56 【问题描述】:所以我已经对这个主题进行了研究,并且有很多方法可以对数组中的字符串进行收藏。有一个收藏按钮,用户单击该按钮以收藏将在数组中的特定显示字符串。我在这个类中提出了一个加载数组和保存数组的方法。我在 loadArray(favorites, this);和 saveArray(favorites, "favorites", this);它似乎没有将 loadArray 或 saveArray 识别为一种方法。非常感谢!
public class Base extends Activity implements OnClickListener
Button home, search, moreapps, fav;
TextView display;
String [] favorites;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(starting.rt.R.layout.relationship);
home = (Button) findViewById(starting.rt.R.id.Home);
search = (Button) findViewById(starting.rt.R.id.search);
moreapps = (Button) findViewById(starting.rt.R.id.moreapps);
fav = (Button) findViewById(starting.rt.R.id.fav);
display = (TextView) findViewById(starting.rt.R.id.tvResults);
fav.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
display.getText();
loadArray(favorites, this);
favorites = Arrays.copyOf(favorites, favorites.length+1);
favorites[favorites.length]=display.getText().toString();
saveArray(favorites, "favorites", this);
);
public String[] loadArray(String arrayName, Context mContext)
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
int size = prefs.getInt(arrayName + "_size", 0);
String array[] = new String[size];
for(int i=0;i<size;i++)
array[i] = prefs.getString(arrayName + "_" + i, null);
return array;
public boolean saveArray(String[] array, String arrayName, Context mContext)
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++)
editor.putString(arrayName + "_" + i, array[i]);
return editor.commit();
public void onClick(View arg0)
// TODO Auto-generated method stub
【问题讨论】:
【参考方案1】:那是因为 this 在那个范围内是 onClickListener(),你可以使用 Base.this 来引用 Activity(上下文)。
我不建议使用 getApplicationContext(),文档说:
这通常只应在您需要一个上下文的情况下使用 生命周期与当前上下文是分开的,它与 进程的生命周期而不是当前组件的生命周期。
【讨论】:
适用于 SaveArray 不加载数组 您还可以从 loadArray() 和 saveArray() 中删除 Context 参数并调用getSharedPreferences("preferencename", 0);
,因为它们是 Activity 类的一部分,该类已经是一个上下文。【参考方案2】:
你在打电话
loadArray(String[], View.OnClickListener)
而不是
loadarray(String, Context)
"favorites" 是字符串数组,不是字符串
“this”指的是 View.OnclickListener 而不是 Context
您可以使用“getApplicationContext()”获取上下文
【讨论】:
以上是关于从数组加载和保存字符串的问题的主要内容,如果未能解决你的问题,请参考以下文章