Начать activity с помощью void

Есть 4 cardview, при нажатии на каждую из них, надо вызывать разные activity. Можно, разумеется, написать

switch (v.getId()) {
        case R.id.gallery_card:
                i = new Intent(this, Gallery.class);
                startActivity(i);
            break;

        case R.id.cam_card:
                i = new Intent(this, Cam.class);
                startActivity(i);
            break;

        case R.id.rating_card:
            i = new Intent(this, Rating.class);
            startActivity(i);
            break;

        case R.id.top_card:
            i = new Intent(this, Top.class);
            startActivity(i);
            break;

        default:
            break;
    }

Но хочется как-то красивее сделать, так что я попытался создать void startIntent:

void startIntent(final String intentName){
            Intent i = new Intent(this, intentName);
            startActivity(i);
    }

А в case вызывать

startIntent("Gallery.class");

Но студия ругается и говорит, что так нельзя. Так что хочу узнать, как льзя.


Ответы (1 шт):

Автор решения: igo

В ваш метод необходимо передавать не строку(String), а класс который является Activity.

можно так

  void startIntent(Class<? extends Activity> intentName) {
    Intent i = new Intent(this, intentName);
    startActivity(i);
  }
→ Ссылка