2012-06-27 2 views
0

갤러리를 확장하는 클래스를 만들었습니다. 수퍼 클래스에는 onCreate() 메서드가 없으므로 의도를 실행할 수 없습니다.onCreate {}없이 인 텐트 시작

this.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

@Override 
public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
Intent intent = new Intent(v.getContext(), ClassName.class); 
startActivity(intent); 
}} 

다음 시도도 작동하지 못했습니다 :

가 어떤 조언을 크게 감상 할 수있다
Intent intent = new Intent(ThisClassName.this, ClassName.class); 
startActivity(intent); 

: 사실

+0

ok 메소드를 작성하고 메소드에 의도를 넣으십시오. 그런 다음 클래스의 인스턴스를 만들고 메소드를 호출하십시오. 하지만 랩을 시도해보고 시도하십시오. 그러면 –

+0

오케이입니다. 의도가 다른 Activity를 호출하지 않는 경우 인스턴트를 생성하고 메서드를 호출하면 @herom이 의도 한대로 클래스를 호출 할 수 없다고 언급했기 때문입니다. –

답변

3

, startActivity();활동의 방법이다 이 내 샘플 코드 클래스,이 메서드를 실행하려면 Context of Activity 또는 Reference of Activity이어야합니다.이 메서드는 Activity 클래스 외부에서 다른 클래스에서는 Act를 사용하지 않고 실행할 수 없습니다 그것에 대한 ivity 참조.

시도,

<Activity_Name>.this.startActivity(intent); 

또는

mContext.startActivity(intent); 

여기 mContext은 활동 클래스의 참조입니다.

+0

mContext가 해결했습니다! 감사 :) – melvintcs

2

당신은, 당신이 텐트에서 함께 시작할 수 없습니다 (그렇지 않으면 당신은 onCreate()을 구현해야하기 때문에, 내 생각) 클래스는 Activity에서 상속하지 않는 경우, Activity을 시작하려는 썼던 것처럼 모두 ....

0

클래스가 기본 활동의 확장 클래스이고 다른 활동을 클래스 본문에서 호출하려는 경우 다른 클래스에서 메소드를 만든 다음 클래스의 인스턴스를 만들고 메소드를 호출합니다.

그들은 동일한 성질을 가지고 있기 때문에 작동 할 것입니다. 그러나 try 및 catch 메서드에서 메서드 호출을 랩핑해야합니다. 그렇지 않으면 오류가 발생할 수 있습니다. 당신은 당신의 super 클래스 View과 뷰가 사용하는 어떤에서 onCreate 방법

이 does't 것을 볼 수는 Hirerchy 볼 경우

0

GalleryView 유형 당신의 당신은에서 사용할 수 CustomGallery

xml 또는 코드

<com.mypackage.CustomGallery > 
android:id... 


</com.mypackage.CustomGallery>