在优先存储值后,它不会在 textview 中设置

After storing value in preference it is not setting in textview

我是 android 开发人员。我正在创建一个应用程序,在我的应用程序中我使用 json 解析 来获取状态名称,因此当用户单击 texTextViewtview("Select State") 时,警报对话框将显示所有状态名称。

然后我可以 select 任何状态名称,它会在我的 TextView 中设置并存储在首选项中。

到这里它运行良好,但问题是如果我关闭应用程序并再次打开我在 TextView 中设置的应用程序消失了并且再次显示 "Select State"..

任何帮助将不胜感激..

以下是我的代码片段

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //spcountry=(TextView)rootView.findViewById(R.id.spinnercountry);
        spstate=(TextView)findViewById(R.id.feedbackspinnerstates);
        spcity=(TextView)findViewById(R.id.feedbackspinnercitys);




        new LoadAllStates().execute();


    }

    class LoadAllStates extends
            AsyncTask<String, String, ArrayList<HashMap<String, String>>> {



        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Please wait..");
            pDialog.setIndeterminate(true);
            // pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
            pDialog.setCancelable(true);
            pDialog.show();

        }

        protected ArrayList<HashMap<String, String>> doInBackground(
                String... args) {
            ServiceHandler sh = new ServiceHandler();

            // Making a request to url and getting response
            statedata = new ArrayList<HashMap<String, String>>();
            String jsonStr = sh.makeServiceCall(STATE_URL, ServiceHandler.GET);

            Log.d("Response: ", "> " + jsonStr);

            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);
                    state_list = jsonObj.getJSONArray(COUNTRY_LIST);

                    // looping through All Contacts
                    for (int i = 0; i < state_list.length(); i++) {
                        JSONObject c = state_list.getJSONObject(i);

                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        map.put(STATE_SLG, c.getString(STATE_SLG));
                        map.put(STATE_ID, c.getString(STATE_ID));
                        map.put(STATE_NAME, c.getString(STATE_NAME));

                        statedata.add(map);

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("ServiceHandler", "Couldn't get any data from the url");
            }

            return statedata;
        }

        protected void onPostExecute(ArrayList<HashMap<String, String>> result) {

            super.onPostExecute(result);
            pDialog.dismiss();

            arrallstates = new String[statedata.size()];
            for (int index = 0; index < statedata.size(); index++) {
                HashMap<String, String> map = statedata.get(index);
                arrallstates[index] = map.get(STATE_NAME);
            }

            // pass arrConuntry array to ArrayAdapter<String> constroctor :
            adapterallstates = new ArrayAdapter<String>(MainActivity.this,
                    android.R.layout.simple_spinner_dropdown_item, arrallstates);
            spstate.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View w) {


                    new AlertDialog.Builder(MainActivity.this)
                            .setTitle("Select")
                            .setAdapter(adapterallstates,
                                    new DialogInterface.OnClickListener() {



                                        @Override
                                        public void onClick(
                                                DialogInterface dialog,
                                                int which) {



                                            test=adapterallstates
                                                    .getItem(which).toString();

                                            SharedP.setStringToSharedPrefsForKey("MyKey", test, MainActivity.this);

                                            System.out.println("whts in pref"+SharedP.setStringToSharedPrefsForKey("MyKey", test, MainActivity.this));

                                            System.out.println("whts in pref get"+SharedP.getStringFromSharedPrefsForKey("MyKey", MainActivity.this));

                                            storeds=SharedP.getStringFromSharedPrefsForKey("MyKey", MainActivity.this);

                                            Log.d("Tag", SharedP.getStringFromSharedPrefsForKey("MyKey", MainActivity.this));
                                                                                        spstate.setText(storeds); 

                                             if( spstate.getText().length() != 0) 
                                                {
                                                 System.out.println("NotEMpty");
                                                }
                                                else
                                                {
                                                    System.out.println("EMpty");

                                                }

                                            try {
                                                statename = state_list
                                                        .getJSONObject(which)
                                                        .getString("state_slug");
                                                stnm = state_list
                                                        .getJSONObject(which)
                                                        .getString(STATE_NAME);

                                                Log.d("Response statenm: ",
                                                        "> " + statename);
                                            //  new LoadAllStatesCity()
                                                        //.execute();

                                                // Toast.makeText(getActivity(),
                                                // statename,
                                                // Toast.LENGTH_LONG).show();
                                            } catch (JSONException e) {
                                                // TODO Auto-generated catch
                                                // block
                                                e.printStackTrace();
                                            }

                                            dialog.dismiss();
                                        }
                                    }).create().show();
                }
            });

        }
    }

请看下面的代码:

设置值:

 SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("yourtextvalueKey", "yourvalue");
 editor.commit();

获取价值:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String text= prefs.getString("yourtextvalueKey", null);

if(text != null){
textview.setText(text);
}

:

MY_PREFS_NAME : 这是首选项键。例如 "myprefs" 通过偏好设置和获取值时两者将相同。

并尝试全局声明您的首选项并在 onCreate() 方法中对其进行初始化。

希望对您有所帮助。