(cursorAdapterを使用して)listItemsを表示するアクティビティがあります。View.OnClickListener実装クラス内でfinish()を呼び出す
listItemのXMLにはいくつかのボタンが含まれています。カーソルアダプタのnewView()
メソッドでは、これらのボタンは匿名宣言ではなく、onClickListener
を取得します。リスナーを実装するクラスがあります。特定のボタンにクリックがある場合、そのすべてのアクティビティが終了するはずです。
ボタンクラスのfinish()
が機能しないことに驚くことはありません。 activityContext.finish
も機能しません。
どうすればそれを管理できますか?
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;
}
}
}
getActivity()。finish();を試してください。これを見てください:https://stackoverflow.com/questions/4594996/activity-finish-called-but-activity-stays-loaded-in-memory – MatiRC