2011-10-14 202 views
2

内的自定义标题栏上的findViewById我在我的TabActivity上设置了一个自定义标题栏。自定义标题栏包含一个TextView和一个ImageView。 tabHost有多个选项卡。在标签活动

我想要做的是访问标签中的ImageView资源。

我正在从主Tab选项(它扩展TabActivity)的自定义标题栏访问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); 

现在我想访问我的选项卡中的ImageView(它们被添加到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); 

的图像保持为空。

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> 

请给我一些想法,我怎么能在标签访问自定义标题的ImageView的?

回答

4

您可以通过在TabActivity宣布他们public static访问TextViewImageView。然后,在Sub-Activity你明明访问公共静态的TextView和ImageView的喜欢,

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

这对我有用:)谢谢Lalit – rizzz86

+2

这真的是一个糟糕的建议。请停止为SO用户创建内存泄漏。 – Reno

+2

嗨雷诺心灵知道为什么有内存泄漏? – ericlee

2

如果您只将自定义标题栏放在主TabActivity中,则标题栏将出现在您的所有子TabActivity中。

例如,如果你给在主要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); 

没有必要在你的子标签活动给予。

在所有子选项卡活动您只需设置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) 

insted的ID findViewById(id); 访问父的任何观点。