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();
}
});
}
タスクアプリを作っています。タスクを削除する前にアラートダイアログを表示します。特別なことはありません。クラッシュが原因でコードが壊れています(アラートダイアログを表示したい場所)。
誰かがコードをチェックして、サービスをリークする方法と場所を教えてください。