0

DemoView クラスを拡張するクラスがあります (freechart ライブラリを使用していくつかのチャートを表示するため)。私の問題は、そのアクティビティでメニューだけを作成したいということです。そのクラスをアクティビティにキャストすることを考えていますが、論理的ですか? または、他の解決策はありますか?ご協力ありがとうございました。

4

1 に答える 1

3

DemoView のソース コード最初の基本的なチェックでは、Object. したがって、次のように説明したことを試してはいけません。

そのクラスを Activity にキャストする

メニューのサポートを追加したい場合は、次のアーキテクチャを試す必要があります。

  • DemoView を拡張し、メニュー サポートを追加します (DemoViewWithMenu クラスなど)。
  • クラスに DemoView だけでなく DemoViewWithMenu を拡張させる

しかし、単に View オブジェクト内から Activity オブジェクトにアクセスしようとすると、Activity も Context であるという事実を利用できます。ただし、すべてのコンテキストがアクティビティであるとは限らないため、以下は機能する可能性がありますが、例外も発生する可能性があります。

Activity a = (Activity)getContext();  //inside method of View class

以下も参照してください。

于 2012-11-25T15:10:18.637 に答える