我需要使用片段'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;
}