1. ホーム
  2. android

アクティビティ以外のクラスからアクティビティを開始するにはどうしたらいいですか?

2023-09-28 22:26:05

質問

マップビューのアクティビティで、いくつかの OverlayItems . その中で onTap メソッドで、このオーバーレイ写真をフルスクリーンとして表示する新しいアクティビティをトリガーしたいのです。

これをオーバーレイクラスの内部で実行すると

Intent intent = new Intent();
intent.setClass(getApplicationContext, FullscreenView.class);
startActivity(intent);

...私はアクティビティのスコープ内にいないので、アプリケーションコンテキストを見つけることができません。

メインアクティビティにメソッドを追加した場合、例えば startFullscreen :

public static void startFullscreen() {
    if (sCurrentPhoto != null) {
        Intent intent = new Intent();
        intent.setClass(getApplicationContext(), FullscreenView.class);
        startActivity(intent);          
    }
}

を呼び出すことができません。 getApplicationContext()startActivity() というのは、私は静的なコンテキストにいるからです。しかし、私はOverlayクラスでそれを呼び出すために静的メソッドを必要とします。 MainView.startFullscreen() .

簡単に言うと ActivityでないクラスからActivityを開始するにはどうしたらよいですか?

どのように解決するのですか?

あなたの onTap をオーバーライドすると MapView を取得し、そこから Context :

@Override
public boolean onTap(GeoPoint p, MapView mapView)
{
    // ...

    Intent intent = new Intent();
    intent.setClass(mapView.getContext(), FullscreenView.class);
    startActivity(intent);

    // ...
}