Таким образом, приложение, которое я сейчас разрабатываю, в основном состоит из представления переработчика, которое состоит из представлений карты, и каждое из них содержит несколько текстовых представлений, кнопку редактирования и кнопку удаления, а также кнопку с плавающим действием для добавления новогопросмотры карт.Так что моя проблема в том, что я использую один фрагмент, который управляет представлением, чтобы добавить и отредактировать представление карты, и когда я редактирую карту, он вызывает метод add, когда он должен вызвать метод edit, и вот код, который связан с этой проблемой,во-первых, это класс ListActivity
@Override
public void sendData(String manuf, String name, String model, String carImage,View myView) {
saveCarToDB(myView,manuf, name, model, carImage);
}
private final static int REQUEST_IMAGE_CAPTURE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
// .setAction("Action", null).show();
fragment = new com.hitham.miscarros.Fragments.DialogPickerFragment();
fragment.show(getSupportFragmentManager(),"new car picker fragment"); }
});
.
.
.
.
.
private void saveCarToDB (View v,String carManuf, String carName, String carModel, String carImage){
Cars miCarro = new Cars();
miCarro.setCarManuf(carManuf);
miCarro.setCarModel(carModel);
miCarro.setCarName(carName);
miCarro.setCarImage(carImage);
db.addCar(miCarro);
Snackbar.make(v, "Fucking Shit saved", Snackbar.LENGTH_LONG).show();
Log.e("ID:", String.valueOf(db.getCarsCount()));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
fragment.dismiss();
//Refresh activity
startActivity(new Intent(ListActivity.this, ListActivity.class));
finish();
}
}, 1273);
}
, и это методы RecyclerViewAdapter
public void editCar(Cars car)
{
DialogFragment fragment = new com.hitham.miscarros.Fragments.DialogPickerFragment();
fragment.show(((FragmentActivity)context).getSupportFragmentManager(),"edit car picker fragment");
.
.
.
.
.
@Override
public void sendData(String carManuf, String carName, String carModel, String carImage,View myView) {
DatabaseHandler db = new DatabaseHandler(context);
Cars car = new Cars();
car.setCarID(getAdapterPosition());
if(carManuf != null)
car.setCarManuf(carManuf);
if(carName != null)
car.setCarName(carName);
if(carModel != null)
car.setCarModel(carModel);
if(carImage != null)
car.setCarImage(carImage);
db.updateCars(car);
notifyItemChanged(getAdapterPosition(), car);
dialog.dismiss();
Intent myIntent = new Intent(context,ListActivity.class);
context.startActivity(myIntent);
((Activity)context).finish();
((Activity)context).finish();
}
}
, а это класс dialogFragment
package com.hitham.miscarros.Fragments;
public class DialogPickerFragment extends DialogFragment {
public interface OnInputListener {
void sendData(String carManuf,String carName,String carModel,String carImage,View v);
}
public OnInputListener onInputListener;
private static final int REQUEST_IMAGE_CAPTURE = 1;
private Button imageBu;
private Button submitBu;
private ImageView carImage;
private EditText carManuf;
private EditText carName;
private EditText carModel;
private String imagePath;
private Cars car;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View myView = LayoutInflater.from(getActivity()).inflate(R.layout.new_car_popup,null);
carManuf = myView.findViewById(R.id.nCarManuf);
carName = myView.findViewById(R.id.nCarName);
carModel = myView.findViewById(R.id.nCarDOB);
carImage = myView.findViewById(R.id.laImagenaPuta);
imageBu = myView.findViewById(R.id.addImageID);
submitBu = myView.findViewById(R.id.addCarID);
imageBu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(getActivity(), new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_IMAGE_CAPTURE);
}else {
Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images
.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent,REQUEST_IMAGE_CAPTURE);
}
}catch (Exception e)
{
e.printStackTrace();
}
}
});
submitBu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String manuf = carManuf.getText().toString();
String name = carName.getText().toString();
String model = carModel.getText().toString();
onInputListener.sendData(manuf,name,model,imagePath,v);
}
});
myView.setBackgroundColor(Color.TRANSPARENT);
return myView;
}
// public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
//
// }
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode)
{
case REQUEST_IMAGE_CAPTURE:
if (resultCode == RESULT_OK)
{
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor miCursor = getActivity().getContentResolver().query(selectedImage,filePathColumn,null,null,null);
miCursor.moveToFirst();
int columnIndex = miCursor.getColumnIndex(filePathColumn[0]);
imagePath = miCursor.getString(columnIndex);
miCursor.close();
Bitmap laImagenaPuta = BitmapFactory.decodeFile(imagePath);
carImage.setImageBitmap(laImagenaPuta);
}
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try{
onInputListener = (OnInputListener) getActivity();
}catch (ClassCastException e){
Log.e("maTag","on Attach : class cast exception");
}
}
}
ps: только явключил то, что я думаю, вовлечено в это.Итак, возвращаясь к моему вопросу, могу ли я сделать это с одним фрагментом или мне нужно сделать два разных фрагмента для каждой кнопки добавления и редактирования?Заранее спасибо и извините за доставленные неудобства.