как совместить подобные занятия в одном занятии в андроид студии? - PullRequest
0 голосов
/ 10 мая 2019

пытаюсь сделать приложение в андроид студии.но у меня проблема.Например, автомобили Mercedes и Audi имеют такие функции, как бензин и скорость.Я хочу написать в класс вместо того, чтобы делать отдельные классы для Mercedes и Audi.Я хотел бы идентифицировать бренды с похожими функциями из класса автомобилей и открыть их с помощью кнопки.но я не знаю.Можете ли вы показать мне пример?Спасибо.

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Если вы хотите иметь действие, которое имеет разные данные для каждого экземпляра, вы можете использовать данные пакета для этого. В вашем автомобиле активность:

public static Intent newIntent(Context context, String brand, int speed, FuelType fuel)
{
    Intent intent = new Intent(context, CarActivity.class);
    intent.putExtra(ARG_BRAND, brand);
    intent.putExtra(ARG_SPEED, speed);
    intent.putExtra(ARG_FUELTYPE, fuel);
    return intent;
}

Затем вы можете прочитать эти значения в onCreate ()

Вы можете запустить это действие для различных нажатий кнопок, таких как:

startActivity(CarActivity.newIntent(getActivity(), "Mercedes", 220, FuelType.Diesel));
0 голосов
/ 10 мая 2019

Скорее всего, это так:

class Manufacturer { ... }

class Car { ... }

тогда вы можете передать carId в CarActivity или manufacturerId в ManufacturerActivity.

0 голосов
/ 10 мая 2019

Насколько я понимаю, это немного больше, чем наследование ;это вопрос проектирования структуры данных.

Типичное наследование в вашем случае будет выглядеть так:

enum FuelType {
    Petrol, //gasoline
    Diesel,
    Electricity;
}    

class Car {
    FuelType fuelType;
    float speed;
}

class Audi extends Car {}

class Mercedes extends Car {}

Однако, поскольку вы хотите открыть бренды с похожими функциями - своего рода "например, сравнивать продукты на Amazon - масштаб этой проблемы выходит за рамки простого семантического структурирования моделей данных;оно охватывает само структурирование отображаемых данных.Включите некоторый код, чтобы получить более четкую картину.

...