在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无效错误,根据您的要求,您可以更改函数访问修饰符。。。