2011-10-14 1 views
2

TabActivity에 사용자 정의 제목 표시 줄이 있습니다. 사용자 정의 제목 표시 줄에는 TextView와 ImageView가 들어 있습니다. tabHost에는 여러 개의 탭이 있습니다.탭 활동 내 사용자 정의 제목 표시 줄의 findViewById

내가하고 싶은 일은 탭에서 ImageView 리소스에 액세스하는 것입니다.

TabActivity를 확장하는 기본 Tab 활동의 사용자 정의 제목 표시 줄에서 TextView에 액세스 중이며 정상적으로 작동하고 있습니다.

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.myactivity); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mycustomtitle); 
TextView tv = (TextView) findViewById(R.id.viewTitleId); 

가 지금은 (tabHost에 추가) 내 탭의 이미지 뷰에 액세스하려면 : 다음은 주요 활동에서 잘 작동 코드입니다. 내가 탭의 코드를 다음으로 설정하면 :

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

하면 그것은 오류 다음 제공합니다

You cannot combine custom titles with other title features 

을 내가 직접 탭의 코드에서 다음과 같은 설정한다면 :

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mycustomtitle); 
ImageView image = (ImageView) findViewById(R.id.imageTitleId); 

이미지가 null 남아있다.

mycustomtitle.xml는 두 가지 요소 다음과 같습니다

<TextView 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.80" 
    android:id="@+id/viewTitleId" 
    android:textColor="@color/titleBarTextColor" 
    android:gravity="center_vertical" 
    android:text="@string/viewText" 
    android:textSize="18px" 
    android:paddingLeft="45px" 
    /> 

<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="0dp" 
      android:layout_weight="0.20" 
    android:src="@drawable/btn_save" 
    android:id="@+id/imageTitleId" 
    > 
</ImageView> 

내가 탭에서 사용자 정의 제목의 이미지 뷰에 액세스 할 수있는 방법을 나에게 몇 가지 아이디어를주십시오?

답변

4

당신은 TabActivity 그들에게 public static를 선언함으로써 TextViewImageView에 액세스 할 수 있습니다 설정합니다. 그런 다음, Sub-Activity에 당신은 분명 공공 정적 텍스트 뷰와 이미지 뷰와 같은,

Main_Tab_Activity.textView.setText("my_text_view"); 
+0

그것은 나를 위해 일했다 :) Thanks Lalit – rizzz86

+2

이것은 정말로 나쁜 충고이다. SO 사용자를위한 메모리 누수 생성을 중지하십시오. – Reno

+2

안녕 리노 마음은 왜 메모리 누수가 말하는거야? – ericlee

2

사용자 지정 제목 표시 줄을 Main TabActivity에만 배치하면 제목 표시 줄이 모든 Sub-TabActivity에 나타납니다. 모두 당신이 하위 탭 활동에 제공 할 필요가

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.main_layout); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.header_layout); 
TextView tv = (TextView) findViewById(R.id.viewTitleId); 
ImageView image = (ImageView)findViewById(R.id.imageTitleId); 

없습니다 :

는 예를 들어, 당신은 홈페이지 TabActivity에서 사용자 정의 제목 표시 줄을 준 경우.

는 모든 하위 탭 활동에서 당신은 setContentView(R.layout.sub_layout);

+0

예 @Venky 기본 tabactivity에서 textview와 imageview를 모두 액세스 할 수 있습니다. 그러나 하위 탭 활동에서 ImageView에 액세스하려고합니다. 각 하위 탭에서 ImageView의 다른 동작을 원합니다. – rizzz86

+0

@ rizzz86 왜 하위 활동에서 해당 이미지를 사용해야합니까? 기본적으로 모든 하위 활동 권한에 나타납니다. – Venky

+0

예, 모든 하위 활동에 나타납니다. 하지만 ImageView를 클릭하면 각 하위 탭마다 다른 동작이 필요합니다. 예를 들어 첫번째 열림 탭이있는 ImageView를 클릭하면 table1에 값이 저장되고 두 번째 열림 탭이있는 ImageView를 클릭하면 table2에 값이 저장됩니다. – rizzz86

1

사용에 액세스

getParent().getWindow().findViewById(id) 

액세스에 대한 부모의 뷰를 ID findViewById(id); 을 insted.