0

2 つのライブラリ プロジェクトで構成されるアプリを開発しています。どちらのライブラリ プロジェクトも実際のアプリで使用されます。

最初のライブラリ プロジェクトは、アプリ全体のダッシュボードの形でメイン メニューが含まれているため、メイン ライブラリ プロジェクトと見なすことができます。ダッシュボードの 1 つのエントリから、ユーザーは 2 番目のライブラリ プロジェクトの一部であるアクティビティを開始できます。

すべてのアクティビティと、このアクティビティから開始できるすべてのアクティビティは、2 番目のライブラリ プロジェクトの一部でもあります。したがって、2 番目のライブラリ プロジェクトは最初のライブラリ プロジェクトについて何も知りません。

アクション フローの最後で、ユーザーは 1 つのボタンをクリックしてダッシュボード アクティビティに戻る必要があります。したがって、最初のアクティビティ (ダッシュボード) を除くアクティビティ スタック全体をクリアする必要があります。通常、フラグ FLAG_ACTIVITY_CLEAR_TOP を使用してダッシュボード アクティビティを開始することでこれを行います。また、履歴が必要なため、 FLAG_ACTIVITY_NO_HISTORY を使用することはできません。

しかし、前に述べたように、2 番目のライブラリ プロジェクトのどのコンポーネントも、メイン ライブラリ プロジェクトについて何も認識してはなりません。そのため、フラグを使用して Dashboard アクティビティを呼び出すことは解決策ではありません。

そのため、メイン ライブラリ プロジェクトのダッシュボード アクティビティではなく、2 番目のライブラリ プロジェクトのすべてのアクティビティを終了する方法を探しています。

4

1 に答える 1

2

ダッシュボードが 2 番目のアクティビティを呼び出すときに、クラス名を (文字列として) インテントにバンドルします。2 番目のアクティビティでは、そのクラス名を使用して、返すインテントを作成できます。

文字列を形成するために使用MyActivity.getClass().getName()します。

Class.forName(className)クラスを取り戻すために使用します。

編集:動作させるために完全なパッケージ名を取得する必要がある場合もありますforName().getClass().getPackage().getName()

于 2012-09-24T13:54:27.997 に答える