0

我在 这里发布了问题,但我一无所获,所以我决定提出一个新问题来搜索其他解决方案。

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

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);

}
4

3 回答 3

0

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

于 2013-09-05T03:12:34.897 回答
0

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

据我所知,在您卸载应用程序之前,共享首选项值将保持不变。

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

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

于 2013-09-05T01:51:49.073 回答
0

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

如果你真的要删除这个文件,你应该使用文件操作,sharedprefereces文件位置是/data/data/com.yourpackage.name/shared_prefs/filename.xml. 顺便说一句,您最好使用意图在活动之间发送数据。

于 2013-09-05T02:01:20.640 回答