22

私は最近PythonからAndroidに移行し、ここで立ち往生しています。

これは、必要なパラメータを受け入れるアラートダイアログの共通関数を作成するための私のクラス宣言です。

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>)

どうすればこれを正しく取得できますか?

4

7 に答える 7

32

このように呼び出します:

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);
        }
    });
}
于 2014-11-06T10:34:38.367 に答える
13

アクティビティへの参照を渡したいだけの場合:(MakeCall.thisまたは単にthis。)

于 2013-03-05T16:41:23.033 に答える
6

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());
于 2014-06-23T11:11:21.163 に答える
4

インスタンスが必要です。thisまたはを使用しSampleActivity.thisます。

于 2013-03-06T08:38:33.777 に答える
4

合格したいと思いますthisこれが機能しない場合は、を使用してくださいMakeCall.this

 getAlertDialog(strArray, strTitle, this).show();
于 2013-03-05T16:41:13.230 に答える
1

これは私のために働きます:

private void switchActivity(Class cls){
    Intent intent = new Intent(HomeActivity.this, cls);
    startActivity(intent);
}

次のような関数を呼び出します。switchActivity(DestinationActivity.class)

于 2018-04-05T21:02:59.957 に答える
0

Javaでは、作成する各クラスにもClassクラスがアタッチされます。クラスはClassクラスローダーなどによって使用されます。

他の人が言っているように、MakeCallのアタッチされたクラスを指している間、アクティビティであるそれ自体を指しているので、MakeCall.this代わりに使用する必要があります。MakeCall.classMakeCall.thisMakeCall.classClass

于 2013-03-05T16:46:24.190 に答える