在android中启动应用程序时,如何将丢失的已用值存储在变量中并需要使用它?
即使应用程序已关闭,我们如何存储变量值?及 需要在每次打开应用程序时使用该值在android中启动应用程序时,如何将丢失的已用值存储在变量中并需要使用它?,android,Android,即使应用程序已关闭,我们如何存储变量值?及 需要在每次打开应用程序时使用该值 public class SampleActivity extends Activity { Button back; ListView lv; CitiesParser parsedDataSet; String url = "http://..........."; String pos; String citypos; ArrayList<Stri
public class SampleActivity extends Activity {
Button back;
ListView lv;
CitiesParser parsedDataSet;
String url = "http://...........";
String pos;
String citypos;
ArrayList<String> cid;
MyArrayAdapter adapter;
// SaxParsing xparsing;
XMLParsing xparsing;
@SuppressWarnings({ "static-access" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
xparsing = new XMLParsing(url);
ArrayList<String> cities = parsedDataSet.getdata();
String[] scity = cities.toArray(new String[cities.size()]);
lv = (ListView) findViewById(R.id.listView1);
adapter = new MyArrayAdapter(SampleActivity.this,
android.R.layout.simple_list_item_single_choice, scity);
lv.setAdapter(adapter);
lv.setTextFilterEnabled(true);
cid = parsedDataSet.getId();
System.out
.println("Hello from sample activity" + parsedDataSet.getId());
System.out.println("before onclick in sampleactivity"
+ adapter.getItemId(0));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast.makeText(SampleActivity.this,
"" + cid.get((int) adapter.getItemId(arg2)),
Toast.LENGTH_LONG).show();
citypos = cid.get((int) adapter.getItemId(arg2));
}
});
back = (Button) findViewById(R.id.backbutton);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bundle b = new Bundle();
b.putString("cityid", citypos);
System.out.println("Main PutInt" + b);
Intent in = new Intent(SampleActivity.this, Home.class);
in.putExtras(b);
startActivity(in);
}
});
/*
* public static void storeToPreference(Activity c,String value) {
* SharedPreferences myPrefs = c .getSharedPreferences("cityname",
* Activity.MODE_PRIVATE); SharedPreferences.Editor e = myPrefs.edit();
* e.putString("yourkey", value); e.commit(); }
*/
}
private class MyArrayAdapter extends BaseAdapter {
String[] items;
public MyArrayAdapter(Context context, int textViewResourceId,
String[] items) {
this.items = items;
}
@Override
public int getCount() {
return items.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.citieslist, null);
}
TextView tv = (TextView) v.findViewById(R.id.tvCity);
tv.setText(items[position]);
return v;
}
}
}
下面显示的是我的代码。从下面的代码中,我将获得cityname和
我需要在下一个视图中使用cityid的城市id。当我
关闭应用程序时,我将丢失城市的id和名称。那么对于这个
我需要使用上次选择的城市作为下次的默认城市
当应用程序打开时
public class SampleActivity extends Activity {
Button back;
ListView lv;
CitiesParser parsedDataSet;
String url = "http://...........";
String pos;
String citypos;
ArrayList<String> cid;
MyArrayAdapter adapter;
// SaxParsing xparsing;
XMLParsing xparsing;
@SuppressWarnings({ "static-access" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
xparsing = new XMLParsing(url);
ArrayList<String> cities = parsedDataSet.getdata();
String[] scity = cities.toArray(new String[cities.size()]);
lv = (ListView) findViewById(R.id.listView1);
adapter = new MyArrayAdapter(SampleActivity.this,
android.R.layout.simple_list_item_single_choice, scity);
lv.setAdapter(adapter);
lv.setTextFilterEnabled(true);
cid = parsedDataSet.getId();
System.out
.println("Hello from sample activity" + parsedDataSet.getId());
System.out.println("before onclick in sampleactivity"
+ adapter.getItemId(0));
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast.makeText(SampleActivity.this,
"" + cid.get((int) adapter.getItemId(arg2)),
Toast.LENGTH_LONG).show();
citypos = cid.get((int) adapter.getItemId(arg2));
}
});
back = (Button) findViewById(R.id.backbutton);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bundle b = new Bundle();
b.putString("cityid", citypos);
System.out.println("Main PutInt" + b);
Intent in = new Intent(SampleActivity.this, Home.class);
in.putExtras(b);
startActivity(in);
}
});
/*
* public static void storeToPreference(Activity c,String value) {
* SharedPreferences myPrefs = c .getSharedPreferences("cityname",
* Activity.MODE_PRIVATE); SharedPreferences.Editor e = myPrefs.edit();
* e.putString("yourkey", value); e.commit(); }
*/
}
private class MyArrayAdapter extends BaseAdapter {
String[] items;
public MyArrayAdapter(Context context, int textViewResourceId,
String[] items) {
this.items = items;
}
@Override
public int getCount() {
return items.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.citieslist, null);
}
TextView tv = (TextView) v.findViewById(R.id.tvCity);
tv.setText(items[position]);
return v;
}
}
}
public类SampleActivity扩展活动{
按钮返回;
ListView lv;
CitiesParser parsedDataSet;
字符串url=”http://...........";
字符串位置;
字符串citypos;
ArrayList cid;
MyArrayAdapter适配器;
//撒克逊人;
xmlxparsing;
@SuppressWarnings({“静态访问”})
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
xparsing=新的XMLParsing(url);
ArrayList cities=parsedDataSet.getdata();
字符串[]scity=cities.toArray(新字符串[cities.size()]);
lv=(ListView)findViewById(R.id.listView1);
适配器=新的MyArrayAdapter(SampleActivity.this,
android.R.layout.simple_list_item_single_choice,scity);
低压设置适配器(适配器);
lv.setTextFilterEnabled(真);
cid=parsedDataSet.getId();
系统输出
.println(“来自示例活动的Hello”+parsedDataSet.getId());
System.out.println(“onclick-in-sampleactivity之前”
+adapter.getItemId(0));
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
Toast.makeText(SampleActivity.this,
“”+cid.get((int)adapter.getItemId(arg2)),
Toast.LENGTH_LONG).show();
citypos=cid.get((int)adapter.getItemId(arg2));
}
});
后退=(按钮)findViewById(R.id.backbutton);
back.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Bundle b=新Bundle();
b、 putString(“cityid”,citypos);
System.out.println(“主输出”+b);
Intent in=新的Intent(SampleActivity.this,Home.class);
in.putExtras(b);
星触觉(in);
}
});
/*
*公共静态void storeToPreference(活动c,字符串值){
*SharedReferences myPrefs=c.getSharedReferences(“cityname”,
*Activity.MODE_PRIVATE);SharedPreferences.Editor e=myPrefs.edit();
*e.putString(“yourkey”,value);e.commit();}
*/
}
私有类MyArrayAdapter扩展BaseAdapter{
字符串[]项;
公共MyArrayAdapter(上下文,int textViewResourceId,
字符串[]项){
这个项目=项目;
}
@凌驾
public int getCount(){
返回项目。长度;
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.layout.citieslist,空);
}
TextView电视=(TextView)v.findViewById(R.id.tvCity);
tv.setText(项目[位置]);
返回v;
}
}
}
您应该使用SharedReferences
这说明了不同的数据存储方法:
当应用程序被销毁时调用此方法
public static void storeToPreference(Activity c) {
SharedPreferences myPrefs = c
.getSharedPreferences(Util.USER_DETAILS, Activity.MODE_PRIVATE);
SharedPreferences.Editor e = myPrefs.edit();
e.putString(Util.API_KEY, <value you wanted to put>);
e.commit();
}
像这样修改你的函数
public static void storeToPreference(Activity c,String value) {
SharedPreferences myPrefs = c
.getSharedPreferences(Util.USER_DETAILS, Activity.MODE_PRIVATE);
SharedPreferences.Editor e = myPrefs.edit();
e.putString("yourkey", value);
e.commit();
}
这一行中的Util.API_键是什么?e.putString(Util.API_键,);是密钥的名称吗?我可以在这里给出我自己的名称吗?Util.API_key表示密钥是字符串,因此您可以根据项目标准给出任何正确的密钥名称。您可以随时通过调用函数public static void storeToPreference(活动c,字符串值)来更新值{SharedReferences myPrefs=c.GetSharedReferences(Util.USER_详细信息,Activity.MODE_私有);SharedReferences.Editor e=myPrefs.edit();e.putString(Util.API_键,值);e.commit();}void是变量storeToPreference的无效类型。我收到此错误。我已发布了我的代码,请检查它并提供解决方案。使用共享首选项我们可以将存储在其中,我们将通过应用程序使用获取这些值。您得到答案了吗?将函数放在类之外,它将删除您r无效错误,根据您的要求,您可以更改函数访问修饰符。。。