android:无法删除和删除sharedpreferences文件

时间:2013-09-05 01:44:32

标签: java android android-intent sharedpreferences

我在here发帖问题,但我什么都没有,所以我决定提出一个新问题来搜索其他解决方案。

这是我的情况:首先,我使用应用程序的共享首选项将数据从一个活动发送到另一个活动,当在第一个活动中单击listview时,它将详细说明。当点击其他列表时,它将转到我之前点击的第一个数据。然后我意识到,如果我使用共享偏好将数据从一个活动发送到其他活动,它将保存在设备内存中,所以我更改我的代码并决定使用意图,但我的共享偏好的文件不会被删除。单击列表时,它将转到我使用共享首选项时单击的第一个数据。  我用过:

settings.edit().clear().commit();

settings.edit().remove().commit();

但我认为它不起作用。这是我使用意图的第一个活动:

public class TerbaruSimasCard extends ListActivity {
    String nama1,alamat1,ket1,img_id1,telp1,begdate1,enddate1;

    private ProgressDialog dialog;
    private ArrayList<TerbaruModel>ListTerbaru;
    ListView list;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
        //hide title bar
            BasicDisplaySettings.toggleTaskBar(TerbaruSimasCard.this, false);
            //show status bar
            BasicDisplaySettings.toggleStatusBar(TerbaruSimasCard.this, true);

            SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
            settings.edit().clear().commit();

            super.onCreate(savedInstanceState);
            setContentView(R.layout.terbarusimascard);
            ListTerbaru= new ArrayList<TerbaruModel>();
            new TerbaruAsyncTask().execute();
     }
    public class TerbaruAsyncTask extends AsyncTask<Void, Void, String> {
        String url = ("http://www.abc.xyz/sc_merchant.htm?s=3&d=25");

        public TerbaruAsyncTask() {
            this.url=url;
        }

        protected void onPreExecute (){ 
            super.onPreExecute();
            dialog = ProgressDialog.show(TerbaruSimasCard.this,"", "melakukan pengambilan data...");
        }
        @Override
        protected String doInBackground(Void... params) {
            String result = "";
            try {
                result= Connection.get(url);
            } catch (Exception e){
                result = "";
                Log.d("test", e.getMessage());
            }
            return result;
        }

    @Override
    protected void onPostExecute (String result){
        super.onPostExecute(result);
        fetchResponse(result.replace("\n","").trim());
        dialog.dismiss();
        ListView lv = getListView();

        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Intent detail= new Intent (TerbaruSimasCard.this, TerbaruDetail.class);

                detail.putExtra("nama", nama1);
                detail.putExtra("alamat",alamat1);
                detail.putExtra("ket", ket1);
                detail.putExtra("telp",telp1);
                detail.putExtra("begdate", begdate1);
                detail.putExtra("enddate",enddate1);
                detail.putExtra("img_id", img_id1);

                System.out.println(nama1);

                startActivity (detail); 
            }
        });
    }


    }

private void fetchResponse (String result){
    if (!result.equals("")){
        try {
            JSONArray jsonArray = new JSONArray(result);
            TerbaruModel LT=null;
            for (int i= 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject= jsonArray.getJSONObject (i);

                LT= new TerbaruModel (jsonObject.optString("kat"),
                        img_id1=jsonObject.optString("img_id"),
                        nama1= jsonObject.optString("nama"),
                        alamat1=jsonObject.optString("alamat"),
                        ket1=jsonObject.optString("ket"),
                        jsonObject.optString("tgl"),
                        jsonObject.optString("accday"),
                        telp1=jsonObject.optString("telp"),
                        begdate1=jsonObject.optString("begdate"),
                        enddate1=jsonObject.optString("enddate")
                        );
                ListTerbaru.add(LT);
                list=(ListView)findViewById(android.R.id.list);



setListAdapter (new TerbaruAdapter(this, ListTerbaru));
        }

这是详细信息:

 public class TerbaruDetail extends Activity {
    String nama1,alamat1,ket1,img_id1,telp1,begdate1,enddate1;
    @Override
    public void onCreate (Bundle savedInstanceState){

        SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
        settings.edit().clear().commit();
        //hide title bar
        BasicDisplaySettings.toggleTaskBar(TerbaruDetail.this, false);
        //show status bar
        BasicDisplaySettings.toggleStatusBar(TerbaruDetail.this, true);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.detailviewer);

        Intent detail= getIntent();
        nama1=detail.getStringExtra("nama");
        alamat1= detail.getStringExtra("alamat");
        ket1= detail.getStringExtra("ket");
        img_id1= detail.getStringExtra("img_id");
        telp1= detail.getStringExtra("telp");
        begdate1= detail.getStringExtra("begdate");
        enddate1= detail.getStringExtra("enddate");

        System.out.println(nama1+"nama");
        TextView detail_phone=(TextView) findViewById(R.id.detail_phone);
        TextView detail_begdate=(TextView) findViewById(R.id.begdate);
        TextView detail_enddate=(TextView) findViewById(R.id.endate);
        TextView detail_name =(TextView) findViewById(R.id.detail_name);    
        TextView detail_adress =(TextView) findViewById(R.id.detail_adress);    
        TextView keterangan =(TextView) findViewById(R.id.keterangan);  
        ImageView detail_img_id= (ImageView) findViewById(R.id.img_kategori);


        detail_name.setText(nama1);
        detail_phone.setText(telp1);
        detail_begdate.setText(begdate1);
        detail_enddate.setText(enddate1);
        detail_adress.setText(alamat1);
        keterangan.setText(ket1);

}

3 个答案:

答案 0 :(得分:0)

如果您不介意删除应用程序,请重新加载apk。

据我所知,共享首选项值将保留,直到您卸载应用程序。

如果上述方法无效,请尝试手动删除

  

/data/data/com.package.name/shared_prefs/PREFS_NAME.xml

答案 1 :(得分:0)

SharedPreferences.Editor.clear()不会删除 sharedpreferences文件,它只会清除此文件中的内容。

如果您确实要删除此文件,则应使用文件操作,sharedprefereces文件位置为/data/data/com.yourpackage.name/shared_prefs/filename.xml BTW,您最好使用意图在活动之间发送数据。

答案 2 :(得分:0)

如果您只想清除数据(因为它已损坏或其他),您可以从主屏幕手动执行此操作。设置 - &gt;应用程序管理器 - &gt; “你的应用” - &gt;清晰的数据