code

비 활동 클래스에서 활동을 시작하려면 어떻게해야합니까?

codestyles 2020. 11. 4. 07:59
반응형

비 활동 클래스에서 활동을 시작하려면 어떻게해야합니까?


몇 가지를 보여주는지도보기 활동이 OverlayItems있습니다. 에서 onTap오버레이의 방법 I은 새로운 활동을 트리거 할 프로그램이 예를 들어, 전체 화면 등이 오버레이 사진.

내 오버레이 클래스 내에서 이렇게하면 :

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().

간단히 말해 : 비 활동 클래스에서 활동을 시작하려면 어떻게해야합니까?


귀하의 onTap재정은 수신 MapView되는 당신이를 얻을 수 있습니다 Context:

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

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

    // ...
}

onTap ()에서 컨텍스트를 얻은 후에는 다음을 수행 할 수도 있습니다.

Intent myIntent = new Intent(mContext, theNewActivity.class);
mContext.startActivity(myIntent);

이것이 좋은 습관인지 아닌지는 모르겠지만 casting a Context object to an Activity object compiles fine.

이 시도: ((Activity) mContext).startActivity(...)


context애플리케이션 ExampleContext의 컨텍스트를 보유 할 애플리케이션 say 정의한 다음이를 사용하여 다음과 같은 활동을 인스턴스화 할 수 있습니다.

var intent = new Intent(Application.ApplicationContext, typeof(Activity2));
intent.AddFlags(ActivityFlags.NewTask);
Application.ApplicationContext.StartActivity(intent);

이 코드는 C#MonoDroid를 사용할 때 작성 되었지만 Java. ApplicationContext스레드 에서 모양 을 만드는 방법

이것이 내가 만든 방법입니다. Application Class

    [Application]
    public class Application : Android.App.Application, IApplication
    {
        public Application(IntPtr handle, JniHandleOwnership transfer) : base(handle, transfer)
        {

        }
        public object MyObject { get; set; }
    }

참고 URL : https://stackoverflow.com/questions/4298225/how-can-i-start-an-activity-from-a-non-activity-class

반응형