Il existe une activité qui affiche listItems (via un cursorAdapter).Appelez finish() dans une classe d'implémentation View.OnClickListener
Le code XML de listItem contient des boutons. Dans la méthode newView()
de l'adaptateur de curseur, ces boutons obtiennent le onClickListener
, et non par une déclaration anonyme, il existe une classe qui implémente l'écouteur. S'il y a un clic sur un certain bouton, l'activité où tout cela arrive, devrait finir.
Je ne suis pas surpris qu'appeler finish()
dans la classe de bouton ne fonctionne pas. activityContext.finish
ne fonctionne pas non plus.
Alors, comment puis-je gérer cela?
public class DetailActvityActionBtn implements View.OnClickListener {
private Context context;
@Override
public void onClick(View view){
context = view.getContext();
System.out.println("CONTEXT:" + context);
///Itemroot
LinearLayout root =(LinearLayout) view.getRootView().findViewById(R.id.detailRoot);
///Tag that stores data
ItemViewAndDataHolder holder = (ItemViewAndDataHolder) root.getTag();
System.out.println("HOLDER: " + holder.toString());
//Get id of item
int id = holder.getId();
//Get quantity of item
int quantity = Integer.parseInt(holder.getQuantity().getText().toString().replaceAll("[^0-9]",""));
///Append id to URI
Uri updateItemUri = ContentUris.withAppendedId(InventoryDB_Contract.entries.CONTENT_URI, id);
///To determine the clicked button, get ID as String
String btnIDasString = context.getResources().getResourceName(view.getId());
System.out.println(btnIDasString);
ContentValues values = new ContentValues();
int updatedRow;
switch (btnIDasString){
case "com.example.android.inventoryapp:id/plusBtn":
System.out.println("plus");
values.put(InventoryDB_Contract.entries.COLUMN_PRODUCT_QUANTITY_IN_STOCK, quantity + 1);
context.getContentResolver().update(updateItemUri, values, null, null);
//CRcaller.saleItem(1);
break;
case "com.example.android.inventoryapp:id/minusBtn":
System.out.println("mins");
values.put(InventoryDB_Contract.entries.COLUMN_PRODUCT_QUANTITY_IN_STOCK, quantity - 1);
updatedRow = context.getContentResolver().update(updateItemUri, values, null, null);
break;
case "com.example.android.inventoryapp:id/deleteItemBtn":
System.out.println("delete");
context.getContentResolver().delete(updateItemUri, null, null);
context.finish();
break;
}
}
}
Essayez getActivity(). Finish(); Voir ceci: https://stackoverflow.com/questions/4594996/activity-finish-called-but-activity-stays-loaded-in-memory – MatiRC