我需要使用片段'CheckInFragment.java'中定义的Button从片段之外定义的数据库中删除数据。当前,deleteCheckIn方法位于CheckInList.java中,需要使用OnClickListener在片段中定义的删除按钮上调用该方法。
当前,我无法在片段中引用或使用/创建此方法。
我尝试在片段中引用该方法,但是由于它仅需要将参数存储在CheckInList.java中,因此无法成功。我已经尝试过不使用方法直接调用mDataBase.delete,但是由于之前的尝试,没有这些参数就无法调用它。
CheckInList.java
...
public class CheckInList {
private static CheckInList sCheckInList;
private Context mContext;
public SQLiteDatabase mDataBase;
public static CheckInList get(Context context) {
if (sCheckInList == null) {
sCheckInList = new CheckInList(context);
}
return sCheckInList;
}
public CheckInList(Context context) {
mContext = context.getApplicationContext();
mDataBase = new CheckInBaseHelper(mContext).getWritableDatabase();
}
//REQUIRED METHOD TO BE CALLED
public void deleteCheckIn(CheckIn c) {
mDataBase.delete(DATABASE_NAME, CheckInTable.Cols.UUID + "=" + c, null);
}
...
//CheckInFragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_checkin, container, false);
...
mDeleteButton = (Button) getView().findViewById(R.id.checkin_delete);
mDeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//call delete method here
}
});
return v;
}
...
//CheckIn.java(根据评论)
public class CheckIn {
private UUID mId;
private String mTitle;
private String mPlace;
private String mDetails;
private Date mDate;
private double mLatitude;
private double mLongitude;
...
public UUID getId() {
return mId;
}
...
public CheckIn() {
this(UUID.randomUUID());
}
public CheckIn(UUID id) {
mId = id;
mDate = new Date();
}
...
当单击mDeleteButton按钮时,我想找到一种使用deleteCheckIn的方法。
任何帮助表示赞赏!
分析解答
public class CheckInList {
...
// While implementing Singleton, the constructor must be private
private CheckInList(Context context) {
mContext = context.getApplicationContext();
mDataBase = new CheckInBaseHelper(mContext).getWritableDatabase();
}
...
}
mDeleteButton = (Button) getView().findViewById(R.id.checkin_delete);
mDeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckInList.get(v.getContext()).deleteCheckIn(/* Send the parameter here */);
}
});
return v;
}