Не удается разрешить порядок конструктора (Java.lang.string,Java.lang.string, Java.lang.string,void)

#android #constructor-injection

#Android #конструктор-инъекция

Вопрос:

Для моего проекта Android большая часть данных сохраняется из базы данных, и мое приложение извлечет их. Однако у меня есть два диалоговых окна, в которых будут установлены даты в двух текстовых представлениях, а затем сохранены в моей базе данных. Я пытаюсь использовать currentBeach.setCheckIn(checkInTV.getText().toString()), что приводит к тому, что моя программа выдает ошибку в конструкторе. Для чего здесь решение?

Details.java

 btnSubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new Database(getBaseContext()).addToCart(new Order(
                    menuID,
                    currentBeach.getName(),
                    currentBeach.getPrice(),
                    currentBeach.setCheckIn(checkInTV.getText().toString()),
                    currentBeach.setCheckOut(checkOutTV.getText().toString())
            ));
            Intent intent = new Intent(details.this, Cart.class);
            startActivity(intent);

        }
    });
  

Порядок.Java (конструктор)

 public Order(String productId, String productName, String description, String price, String checkIn, String checkOut) {
    ProductId = productId;
    ProductName = productName;
    Description = description;
    Price = price;
    this.checkIn = checkIn;
    this.checkOut = checkOut;
}
  

Помогите мне, пожалуйста. Спасибо всем 🙂

Ответ №1:

Вы не передаете description в качестве аргумента в Order конструкторе

Ваш Order конструктор имеет 6 аргументов, в то время как вы передаете 5 аргументов внутрь btnSubmit.setOnClickListener() проверьте это

Другая проблема заключалась в том, что currentBeach.setCheckIn(checkInTV.getText().toString()) и currentBeach.setCheckOut(checkOutTV.getText().toString() этот метод возвращал void, в то время как вам нужно передать String значение в Order конструкторе

ПРИМЕР КОДА

 btnSubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new Database(getBaseContext()).addToCart(new Order(
                    menuID,
                    currentBeach.getName(),
                   "description",// pass descriptiion here
                    currentBeach.getPrice(),
                    checkInTV.getText().toString(),
                    checkOutTV.getText().toString())
            ));
            Intent intent = new Intent(details.this, Cart.class);
            startActivity(intent);

        }
    });
  

Комментарии:

1. проблема на самом деле не в этом, а в currentBeach.setCheckIn(checkInTV.getText().toString()) и currentBeach.setCheckOut(checkOutTV.getText().toString()). он говорит void, недействительный

2. Это решает проблему, но позвольте мне сначала попробовать мой эмулятор и проверить, сохраняется ли он в моей базе данных. Большое спасибо.