비 활동에서 startActivityForResult 사용
Activity 및 다른 클래스 (간단한 Java 클래스) 인 MainActivity가 있습니다. "SimpleClass"라고 부릅니다. 이제 해당 클래스에서 startActivityForResult 명령을 실행하고 싶습니다.
이제 그 클래스 (SimpleClass)를 전달할 수 있지만 MainActivity의 컨텍스트 만 전달할 수 있지만 문제는 컨텍스트를 실행할 수 없다는 것입니다 .startActivityForResult (...);
그래서 SimpleClass가 'startActivityForResult를 사용하는 유일한 방법; MainActivity의 참조를 Activity 변수로 SimpleClass에 다음과 같이 전달하는 것입니다.
MainActivity 클래스 내부에서 다음과 같이 SimpleClass의 인스턴스를 만듭니다.
SimpleClass simpleClass=new SimpleClass(MainActivity.this);
이제 이것은 SimpleClass의 모습입니다.
public Class SimpleClass {
Activity myMainActivity;
public SimpleClass(Activity mainActivity) {
super();
this.myMainActivity=mainActivity;
}
....
public void someMethod(...) {
myMainActivity.startActivityForResult(...);
}
}
이제 작동하지만 올바른 방법이 아닙니까? 나는 미래에 약간의 메모리 누수가있을 수 있다는 것이 두렵다.
감사. 레이.
이것이 좋은 방법인지 아닌지는 모르겠지만 casting a Context object to an Activity object
잘 컴파일됩니다.
이 시도:
if (mContext instanceof Activity) {
((Activity) mContext).startActivityForResult(...);
} else {
Log.e("mContext should be an instanceof Activity.");
}
이것은 컴파일되고 결과는 컨텍스트를 보유한 실제 활동에 전달되어야합니다.
이전 활동에서 결과를 가져와야하는 경우 호출 클래스는 활동 유형이어야합니다.
Activity.startActivityForResult()
결과를 사용하지 않는 경우 전화를 거는 목적은 무엇입니까 (적어도 게시 한 샘플 코드에 따라).
않는 myMainActivity
결과에 아무것도 할? 그렇다면 SimpleClass
Activity의 하위 클래스를 만들고 결과를 SimpleClass
자체적으로 처리하십시오 . 결과가 필요한
경우 myMainActivity
에서 활동을 시작하도록 코드를 리팩터링해야 할 수 있습니다 myMainActivity
.
더 나은 솔루션은 다음과 같습니다.
- 만들기
SimpleClass
당신의 서브Activity
클래스 - 다른 활동을 다음과 같이 호출
startActivityForResult
- handling the result within
SimpleClass
itself
참고URL : https://stackoverflow.com/questions/2848775/use-startactivityforresult-from-non-activity
'Program Tip' 카테고리의 다른 글
svn : externals를 시작하는 방법은 무엇입니까? (0) | 2020.10.17 |
---|---|
ASP.NET MVC에서 세션 상태를 비활성화하려면 어떻게해야합니까? (0) | 2020.10.17 |
특정 github 지점에서 코드 검색 (0) | 2020.10.17 |
Eclipse 콘솔에서 백 스페이스 \ b를 작동시키는 방법은 무엇입니까? (0) | 2020.10.17 |
POSIX 스레드 및 신호 (0) | 2020.10.17 |