0
  public void AddCustomEvent() {
        ListView lv = (ListView) findViewById(R.id.listView1);


        final Set<String> tasks = sp.getStringSet("tasks", new HashSet<String>());

        ArrayList<String> taskarr = new ArrayList<String>();

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {

                Log.i("Hello!", String.valueOf(position) + " " + String.valueOf(id));

                final int pos = position;
                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                        getApplicationContext());

                // set title
                alertDialogBuilder.setTitle("Do you want to delete this task");

                // set dialog message
                alertDialogBuilder
                        .setMessage("Click yes to delete !")
                        .setCancelable(false)
                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // if this button is clicked, close
                                // current activity


                                Set<String> tasks = sp.getStringSet("tasks", new HashSet<String>());

                                final ListView listview = (ListView) findViewById(R.id.listView1);

                                final ArrayList<String> list = new ArrayList<String>();
                                for (String str : tasks) {
                                    list.add(str);
                                }
                                list.remove(pos);

                                Set<String> newTasks = new HashSet<String>();

                                for (String str : list) {
                                    newTasks.add(str);
                                }

                                Editor edit = sp.edit();

                                edit.putStringSet("tasks", newTasks);

                                edit.commit();

                                final StableArrayAdapter adapter = new StableArrayAdapter(getApplicationContext(),
                                        android.R.layout.simple_list_item_1, list);

                                listview.setAdapter(adapter);

                            }
                        })
                        .setNegativeButton("No", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // if this button is clicked, just close
                                // the dialog box and do nothing
                                dialog.cancel();
                            }
                        });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();


            }

        });
    }

タスクアプリを作っています。タスクを削除する前にアラートダイアログを表示します。特別なことはありません。クラッシュが原因でコードが壊れています(アラートダイアログを表示したい場所)。

誰かがコードをチェックして、サービスをリークする方法と場所を教えてください。

http://pastebin.com/edsS9CQh

4

1 に答える 1