0

次のようなクラスの配列があります。

private static final Class[] testerClasses={
    Tester1.class
};

このようにする必要があるため、次のように Android インテントを開始できます。

intent =new Intent(this,testerClasses[0]);
startActivity(intent);

私は次のことを行う方法を理解しようとしていますが、それを行う方法を理解するのに本当に苦労しています...

  1. クラスのインスタンスから関数を呼び出す必要があります。ほとんどの場合、これらは static または static like 関数であるため、関数のインスタンスを取得するだけで十分です。
  2. Intent 構造が要求するように、クラスを渡すことができることを確認する必要があります。

なぜ私はこれをしたいのですか?関数をインテントのように呼び出したい場合もあれば、呼び出さずにインテントに関するデータを取得したい場合もあります。私のabstractTesterクラス(すべての具体的なテスタークラスが継承するクラス)には、テストの名前のようなものがいくつか含まれています。これは、インテントが開始される前に持っていると便利です。

助けてくれてありがとう!

4

3 に答える 3

1

でクラス オブジェクトを渡すことはできませんIntent。代わりに、インテントでクラス名を渡します。レシーバーはクラスを取得できますloadClass()

レシーバーがクラス オブジェクトを取得すると、リフレクションを使用して目的のメソッドを呼び出すことができます。

于 2012-12-05T21:45:51.107 に答える
1

正しい解決策は次のとおりです。

private static final abstractTester[] testerClasses={
    new Tester1()
};

intent =new Intent(this,testerClasses[0].getClass());
startActivity(intent);

その後、クラスを参照する必要がある場合は、それを実行できます。魔法のように動作します!

于 2012-12-05T22:55:03.037 に答える
0

こんにちは、以下のコードを使用してみてください。

ArrayList<Class<?>> a = new ArrayList<Class<?>>();
a.add(MainActivity2.class);
a.add(MainActivity.class);

Intent intent =new Intent(this,a.get(0));
startActivity(intent);
于 2012-12-05T21:51:10.880 に答える