Как добавить Dynami c Intent к любому действию, которое определяется бэкэндом в Android? - PullRequest
0 голосов
/ 27 января 2020

Я ищу способ добавить намерение в список элементов, кнопок или баннеров, и намерение для действия определяется сервером.

Возьмите пример. У меня есть список элементов (предположим, 4) с изображением, которое приходит с сервера. Каждый элемент переносит пользователя в другое действие с помощью намерения. Я могу предварительно установить Intent для элемента в соответствии с позицией для Item. 1-й предмет переходит к Деятельности A ... и 4-й к Деятельности D.

Я хочу динамически добавить Намерение к элементам. Например, если я изменю положение или предположу, что изображение предмета изменится (намерение также должно меняться в зависимости от предмета).

Есть один способ, о котором я могу подумать: я отправляю имя класса Activity вместе с данными и соответственно создаю намерение вместе с комплектом.

public void launchActivity(Class<?> clss, Bundle b) {
    Intent intent = new Intent(getActivity(), clss);
    intent.putExtras(b);
    startActivity(intent);
}

Есть ли другой способ Делать это. Может ли DeepLinking помочь мне с этим?

Ответы [ 2 ]

2 голосов
/ 28 января 2020
private Class[] mClasses = {
    One.class,
    Two.class,
    Three.class,
    Four.class
};

Будьте осторожны, ваш список должен быть mClasses.length>=yourList.size() И, на вашем предмете нажмите на слушателя:

onItemClick(YourList item) {
   new Intent(getActivity(), mClasses[item.getPosition]); 
}
1 голос
/ 27 января 2020

Вы можете использовать Class.forName

Однако в этом случае ваш сервер должен будет знать точное имя пакета для каждого используемого класса.

Или вы можете использовать некоторые порядковые номера, чтобы использовать в корпусе выключателя.

switch(activityNumber){
   case One: new Intent(getActivity(), One.class);
   ...
 }
...