Как передать Activity как параметр в функцию - PullRequest
0 голосов
/ 03 января 2019

Я хочу создать функцию, которая получает Activity в качестве параметра, и вместе с ней она будет изменена на эту активность.Но если я использую .class действия для вызова функции, он изменит параметр этой функции на Class<{Name}Activity>, и поэтому он будет принимать только это действие.

Например.Вызов функции:

sendUserToActivity(MainActivity.class);

Как это определено:

private void sendUserToActivity(Class<MainActivity> activityClass) {
    Intent intent = new Intent(RegisterActivity.this, activityClass);
    startActivity(intent);
}

И если я попробую другой вызов:

sendUserToActivity(LoginActivity.class);

Получит ошибку.Поскольку параметр функции установлен как класс MainActivity, он, конечно, не будет принимать другое действие, поэтому как его следует определить для принятия другого действия?

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Вот пример, как это сделать в вашем случае:

private void sendUserToActivity(MainActivity activityClass) {
    Intent intent = new Intent(activityClass, activityClass.getClass());
    startActivity(intent);
}
0 голосов
/ 03 января 2019
xyz(XActivity.class);

void xyz(Class<?> cls)
{
    Intent intent = new Intent(MainActivity.this, cls);
    startActivity(intent);
}

делает работу.Я попробовал это сейчас.

0 голосов
/ 03 января 2019

Может быть, вы можете попробовать это:

private void sendUserToActivity(Class<? extends Activity> activityClass) {
    Intent intent = new Intent(RegisterActivity.this, activityClass);
    startActivity(intent);
}

Таким образом, вы используете дженерики, и все, кто расширяет активность, будут приняты, поэтому ваш код можно адаптировать к любой деятельности, которую вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...