Android, как передать Activity.class в качестве аргумента для функции

Недавно я перешел на Android с python и застрял здесь.

Это мое объявление класса для создания общей функции для диалогового окна оповещений, которое принимает необходимые параметры

public static AlertDialog.Builder getAlertDialog(String strArray[],
        String strTitle, Activity v) {

    return new AlertDialog.Builder(v)
    .setTitle(strTitle).setItems(strArray,
            new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
        }
    });
}

Но я не могу назвать эту функцию через этот фрагмент кода, который дает мне ошибку

  getAlertDialog(strArray, strTitle, MakeCall.class).show();

Ошибка

the method getAlertDialog(String[], String, Activity) in the type   MakeCallAlertDialog is not applicable for the arguments (String[], String, Class<TestActivity>)

Может ли кто-нибудь сказать мне, как правильно это сделать? Заранее благодарю вас.

Ответ 1

Если вы просто хотите передать ссылку на свою деятельность: MakeCall.this (или, может быть, просто this.)

Ответ 2

вызов:

ButtonClickBySani(R.id.btnsehrabandi, sehrabandiActivity.class);

Определение:

private void ButtonClickBySani(int ButtonId, final Class<? extends Activity> ActivityToOpen)
{
    Button btn;
    // Locate the button in activity_main.xml
    btn = (Button) findViewById(ButtonId);

    // Capture button clicks
    btn.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
            startActivity(new Intent(getBaseContext(), ActivityToOpen));
            // Start NewActivity.class
            //Intent myIntent = new Intent(getBaseContext(), ActivityToOpen);
           // startActivity(myIntent);
        }
    });
}

/****************************/ SANI HYNE (delickate)

Ответ 3

Я думаю, вы хотите передать this. Если это не работает, используйте MakeCall.this.

 getAlertDialog(strArray, strTitle, this).show();

Ответ 4

Вам нужен экземпляр. Используйте this или SampleActivity.this.

Ответ 5

Просто создайте объект/экземпляр активности, например new YourActivity().

public static void Redirect(Context context,Activity page) {

..... //code

context.startActivity(new Intent(context,page.getClass()));

((Activity) context).finish();
}

и используйте этот метод как

Redirect(Registration.this, new YourActivity());

Ответ 6

В Java каждый класс, который вы пишете, также будет иметь класс Class, прикрепленный к нему. Класс Class будет использоваться загрузчиком классов и т.д.

Как говорили другие, вы должны использовать MakeCall.this вместо MakeCall.class, потому что MakeCall.this укажет на себя, который является активностью, пока MakeCall.class укажет на прикрепленный класс MakeCall Class.