5

일부 장치에서는 다음 문이 실행되지 않습니다.클래스 캐스팅을위한 대체 메서드

AddEvent act1 = (AddEvent) getLocalActivityManager().getCurrentActivity(); 

위의 진술에는 다른 방법이 있습니까? 일부 장치에서는 정상적으로 작동하지만 다른 장치에서는 예외가 발생합니다.

Click here... Yellow text shows exception

편집 : 내 응용 프로그램 탭에 개발되고있다. OnActivity 결과는 카메라 활동에서 사진을 가져 오는 데 사용됩니다. 그 지역에있는 곳을 모르지만 위의 문장을 잡으려고 할 때 강제 종료가 발생하지 않고 거기에 예외가 표시됩니다.

+0

onActivityResult에서 무엇을 던지 시나요? – Snicolas

+0

무엇을하고 싶습니까? – Sam

+0

스택 추적을 텍스트로 보내주십시오. 스크린 샷을 읽기가 어려우며 플로우 오버 스택은 마이크로 $ oft (왼쪽 하단)의 광고에서 이익을 얻지 못합니다. – Snicolas

답변

2

이 줄을 쓰지는 않지만 logcat 출력은 다음과 같습니다 : Home에 활동을 AddEvent으로 캐스팅하려고 시도했기 때문에 이것이 ClassCastException 인 이유입니다.

FYI, getLocalActivityManager().getCurrentActivity();Home입니다.

+0

하지만 일부 기기에서만이 문제가 발생합니다. HTC 산불에서 잘 작동하지만 Sony Xperia miro 및 Samsung 탭에서는 작동이 중단됩니다. –

3

문제는 실제로 캐스팅과 관련이 없지만 getLocalActivityManager().getCurrentActivity()에 의해 반환 된 개체가 AddEvent 인 것으로 가정합니다. 어떤 시나리오에서 getLocalActivityManager().getCurrentActivity()이 구현을 보지 않고 AddEvent 유형이 아닌 객체를 반환한다고 말하는 것은 어렵습니다.

반환 된 객체가 실제로 유형 AddEvent의 경우 다음 코드 조각을 확인합니다은 :

if(getLocalActivityManager().getCurrentActivity() instanceof AddEvent){ 
    AddEvent act1 = (AddEvent) getLocalActivityManager().getCurrentActivity(); 
} 

그러나 귀하의 경우

, getLocalActivityManager().getCurrentActivity()으로 fable.eventippo.Home의 인스턴스를 반환 무엇 시나리오에서 확인하는 것이 좋습니다 fable.eventippo.AddEvent에 대한

+0

하지만 일부 기기에서만이 문제가 발생합니다. HTC 산불에서 잘 작동하지만 Sony Xperia miro 및 Samsung 탭에서는 작동이 중단됩니다. –

+0

instanceof를 사용하여 어떤 장치가 작동하는지 알 수 있습니다 ... 그러나 지원되지 않는 장치를 구현하는 방법. 강제로 클래스의 인스턴스를 만드는 방법을 의미합니다. –

+0

캐스팅하여 * force *를 적용하여 예상 한 인스턴스를 만들 수 없습니다. 또한,'ActivityGroup'과'LocalActivityManager'는 더 이상 사용되지 않습니다. 'Fragment'와'FragmentManager' API를 대신 사용하십시오. 지원 라이브러리 (호환성 패키지)를 사용하여 이전 플랫폼을 지원할 수 있습니다. – Rajesh