私は主なアクティビティでいくつかのスレッドを実行しています。これらのスレッドが実行されている間、私はスレッドの結果を表示するためのサブアクティビティを作成します。アクティビティ間でハンドラを渡す
主なアクティビティは、スレッドの処理結果(サブアクティビティが実行されているために状態がonPause()
であっても)に通知されます。
((MainActivity) getParent()).setMainActivityHandler(handler)
を呼び出すことによって、サブアクティビティからメインアクティビティに別のハンドラを渡します。setMainActivityHandler()
は、ちょうど初期化メソッドにすぎませんが、メインアクティビティでハンドラを初期化します。メインアクティビティのハンドラのスレッドがMessage
をハンドラー経由でメインアクティビティーに送信すると、メインアクティビティーは別のハンドラーを介してサブアクティビティーに別のMessage
の同じマッサージまたは変更バージョンを送信します。したがって、サブアクティビティはこのメッセージの内容に従ってビューを更新します。
ただし、((MainActivity) getParent())
はnull
を返します。どのように私はこれを行うことができます。他の方法はありますか?
PS:両方のアクティビティがアクティビティを延長します。マニフェストファイルには、メインアクティビティ(action.VIEW
& category.DEFAULT
)用のインテントフィルタがあり、サブアクティビティ用のインテントフィルタはありません。