Следующий метод из класса DbProvider :
public void deleteVenue(UUID uuid)
{
mDatabase.delete(VenueTable.NAME, VenueTable.Cols.UUID + " = ?",
new String[] { uuid.toString() });
}
Мне нужно вызвать вышеупомянутый метод из класса VenueDetailsFragment и более конкретно из onClick метод оповещения. Этот код ниже:
package com.example.musicpro;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import androidx.fragment.app.Fragment;
import java.util.UUID;
public class VenueDetailsFragment extends Fragment {
private Venue mVenue;
private Button mDoneButton;
private Button mDeleteButton;
private EditText mVenueName;
private EditText mVenueAddress;
private EditText mOpeningTime;
private static final String ARG_VENUE_ID = "venue_id";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
UUID venueID = (UUID) getActivity().getIntent().getSerializableExtra(ARG_VENUE_ID);
mVenue = DbProvider.get(getActivity()).getVenue(venueID);
}
@Override
public void onPause()
{
super.onPause();
mVenue.setVenueName(mVenueName.getText().toString());
mVenue.setVenueAddress(mVenueAddress.getText().toString());
mVenue.setOpeningTime(mOpeningTime.getText().toString());
DbProvider.get(getActivity()).updateVenue(mVenue);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_venue_details, container, false);
mVenueName = (EditText) v.findViewById(R.id.venue_name_edit);
mVenueName.setText(mVenue.getVenueName());
mVenueAddress = (EditText) v.findViewById(R.id.venue_address_edit);
mVenueAddress.setText(mVenue.getVenueAddress());
mOpeningTime = (EditText) v.findViewById(R.id.opening_time_edit);
mOpeningTime.setText(mVenue.getOpeningTime());
mDoneButton = (Button) v.findViewById(R.id.done_button);
mDoneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v)
{
}
});
mDeleteButton = (Button) v.findViewById(R.id.delete_button);
mDeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog d = new AlertDialog.Builder(getActivity())
.setTitle(R.string.confirm_dialog)
.setMessage(R.string.delete_dialog)
.setPositiveButton(R.string.yes_dialog, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
//I need to call the deleteVenue method here
}
})
.setNegativeButton(R.string.no_dialog, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create();
d.show();
}
});
return v;
}
}
По существу, когда нажимается кнопка удаления, появляется диалоговое окно, где пользователь подтверждает, что он хочет удалить. После подтверждения должен быть вызван метод deleteVenue, который удаляет место из базы данных и возвращает пользователя в представление списка (вместо подробного просмотра) мест (где удаленное место больше не отображается в списке).
Если вам понадобится больше кода или информации, пожалуйста, дайте мне знать. Заранее спасибо.