0

我有一个带有选择模式的列表视图,它可以工作。我想将该选中的项目保存到共享首选项,然后在另一个活动中使用它。但是,我的 SharedPreferences 并没有正确保存我的字符串,并保存了另一个文件调用 DATA_Preferences 我从未在我的代码中调用过。结果是我的下一个活动得到错误的值..

这是我用来保存字符串并被另一个活动使用的代码:

public void onClick(View v) {

            SparseBooleanArray checked = listView.getCheckedItemPositions();
            ArrayList<DBLokasi> selectedItems = new ArrayList<DBLokasi>();

            // Item position in adapter
            SharedPreferences prefs = getSharedPreferences("DATA_COOR", Context.MODE_PRIVATE);
            SharedPreferences.Editor prefsEditor = prefs.edit();

            for (int i = 0; i < checked.size(); i++) {


                int position = checked.keyAt(i);
                // Add slected if truee
                if (checked.valueAt(i))
                    selectedItems.add(adapter.getItem(position));

                prefsEditor.putFloat(POINT_LATITUDE_KEY + i, Float.parseFloat(values.get(position).getLat()));
                prefsEditor.putFloat(POINT_LONGITUDE_KEY + i, Float.parseFloat(values.get(position).getLng()));


            }
            prefsEditor.commit();

            String[] outputStrArr = new String[selectedItems.size()];



            for (int i = 0; i < selectedItems.size(); i++) {
                outputStrArr[i] = String.valueOf(selectedItems.get(i));
            }


            Bundle b = new Bundle();


            Location location = new Location("POINT_LOCATION");

           for (int i = 0; i < checked.size(); i++) {

                location.setLatitude(prefs.getFloat(POINT_LATITUDE_KEY + i, 0));
                location.setLongitude(prefs.getFloat(POINT_LONGITUDE_KEY + i, 0));

                double latitude = prefs.getFloat(POINT_LATITUDE_KEY + i, 0);
                double longitude = prefs.getFloat(POINT_LONGITUDE_KEY + i, 0);
                prefsEditor.commit();

                b.putDouble("Latitude" + i, latitude );
                b.putDouble("Longitude"  + i, longitude);



                }

            int banyakPilih = checked.size();
            b.putInt("banyakPilih", banyakPilih);

            Intent intent = new Intent(getApplicationContext(),
                    HasilPilihanActivity.class);

            // Create a bundle object
            b.putStringArray("selectedItems", outputStrArr);

            // Add the bundle to the intent.
            intent.putExtras(b);

            // start the ResultActivity
            startActivity(intent);
        }

我将我的首选项保存在 DATA_COOR.xml 文件名中,它保存了我的字符串,但我得到了另一个文件,在我的资源管理器中使用文件名 DATA_Preferences 保存了我的首选项。一些机构可以给我解决方案?之前谢谢。。

4

1 回答 1

0

定义私有SharedPreferences mediaPrefs = null;

把它放在你的构造函数上mediaPrefs = this.getSharedPreferences("Testing", 1);

将以下方法放到源代码中:

public void storeStateString(String prefsKeys, Float prefsValue) {
        SharedPreferences.Editor prefEditor = mediaPrefs.edit();
        prefEditor.putFloat(prefsKeys, prefsValue);
        prefEditor.commit();
    }

使用此方法存储状态,如:

storeStateString("POINT_LATITUDE_KEY"+i,Float.parseFloat(values.get(position).getLat()));

现在您可以通过以下方式获得此偏好:

Float finalValue = mediaPrefs.getFloat("POINT_LATITUDE_KEY1","2.0l");

如果 mediaPrefs 为空,则 2.0l 是默认值;

如果有任何问题,请告诉我。

于 2013-04-22T10:27:00.527 回答