2011-06-13 7 views
0

ActivityGroup의 하위 활동에서 onClick 처리기에 문제가 있습니다.하위 활동 onClick 상위 클래스의 발생 발생

내가 사용 StoreActivity 시작하고 다음 StoreActivity 레이아웃에서

Intent storeIntent = new Intent(this, StoreActivity.class); 
storeIntent.putExtra(StoreActivity.INTENT_STORE_ID, storeId); 

View newVeiw = getLocalActivityManager().startActivity("StoreActivity", storeIntent).getDecorView(); 
setContentView(newVeiw); 

Log.e("DEBUG", "current activity: " + getLocalActivityManager().getCurrentActivity().toString()); 

을 나는 온 클릭 방법을 정의하는 버튼이 있습니다. 그러나 어떤 이유로 StoreActivity를 시작한 상위 클래스에서이를 호출하려고합니다. 활동을 시작했을 때 나는 잘못된 것을하고 있습니까? 위의 Log.e의 결과는 StoreActivity가 현재 활동임을 나타내므로 왜 이런 일이 발생했는지에 관해서는 약간 분실되어 있습니다. StoreActvity에서 코드의 버튼에 대한 onClickListener를 정의하여이 문제를 해결할 수 있지만 가능한 경우이를 피하고 싶습니다.

+0

어떤 코드가 storeActivity 클래스에 있습니까? – ngesh

답변

0

나는 액티비티 대신 부모 액티비티에서 setContentView를 호출하기 때문이라고 생각한다. 대신 의도에서 활동을 시작하고 새로운 활동에서 컨텐츠보기를 설정하십시오. 훨씬 더 간단합니다.

Intent storeIntent = new Intent(this, StoreActivity.class); 
storeIntent.putExtra(StoreActivity.INTENT_STORE_ID, storeId); 
startActivity(storeIntent); 

을 다음 StoreActivity.java에서이 수행합니다 :

이 시도 내가이 문제를 해결 한

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    View newVeiw = getLocalActivityManager().startActivity("StoreActivity", storeIntent).getDecorView(); 

    setContentView(newView); //not sure if this would work, would probably be easier to put your xml layout file in here. 
} 
+0

죄송합니다. 이것은 단일 탭 레이아웃 내에서 발생하는 것을 잊어 버렸습니다. 불행히도 startActivity를 사용하여 액티비티를 시작할 수 없습니다. 액티비티 그룹의 멤버로 남아 있어야만 부모와 동일한 탭 내에서로드됩니다. 나는 그것이 새로운 활동으로 전체 화면을 대체 호출이라고. – Genesis

0

좋아. 문제는이 코드와 관련이 없습니다. 나는 나의 활동에 공통된 기본 클래스를 가지고 있었고, 나는 실수로 인플레이 터를 싱글 톤으로 만들었다. 즉, 모든 부풀려진 레이아웃은 onClick 이벤트를 잘못받는 클래스 인 싱글 톤 인스턴스를 만든 첫 번째 클래스에 속해있었습니다. 그 싱글 톤을 제거하면이 문제가 해결되었습니다.

관련 문제