2011-09-27 63 views
2

我有一个LinearLayout,其中包含ViewStub指向ViewFlipperViewStub *在启动时静态分配其布局参考值(目前,下一个版本将是动态的)。位于ViewFlipper内均10 RelativeLayouts都有自己的按钮,edittexts,textviews的品种等android非唯一视图id

在大约一半的网页是一个TogggleButton

<ToggleButton 
    android:id="@+id/dontNeed" 
    android:textOn="DON'T NEED" 
    android:textOff="DON'T NEED" 
    android:layout_width="200dp" 
    android:layout_alignParentBottom="true" 
    android:layout_height="100dp" 
    android:textSize="36sp" 
    android:layout_centerHorizontal="true" 
    android:background="#AA0000" 
    android:layout_marginBottom="25dp" 
/> 

具体意见,在使用时,将分配的建议基于一些计算值给其他人。这个按钮让系统知道用户不需要来自当前页面的任何信息。

如果我在许多页面上都有这个相同的按钮,它是否需要每个页面的唯一ID?这是基于将听众附加到每个按钮的方式。每个按钮“dontNeed”是否需要一个单独的ID或将非唯一ID附加到侦听器使用所有这些ID?

回答

2

如果我在许多页面上都有这个相同的按钮,它是否需要每个页面的唯一ID?

这取决于你在哪里以及如何呼叫findViewById()来检索小部件。小部件ID必须足够独特,当您在某些事情(活动,ViewFlipper,ViewFlipper等中的子容器等)上调用findViewById()时,确保您获得期望的小部件。

会将非唯一ID附加到侦听器中使用所有这些ID吗?

您不附加“ID到听众”,“非唯一”或其他。您将侦听器附加到小部件。

+0

我的问题并不意味着被视为直译。我明白,当我使用findViewById()时,它返回一个视图(不是一个小部件)。我试图问,如果一个视图存在于许多独立的父视图内,我是否需要维护单独的对象来附加侦听器,还是我能够维护一个对象? –

+1

@ scott.smart:“我的问题并不意味着被视为直译” - 那么为什么你会这样写呢? “如果一个视图存在于许多单独的父视图中” - 这是不可能的。在一个树形结构中,一个孩子有一个父母。 “我是否需要维护单独的对象以将侦听器附加到” - 每个活动小部件都是一个对象,无论您是否参考它。如果你想响应那个小部件的事件,每个小部件都需要有一个叫它的set-listener方法。您是否拥有共享一个共同的侦听器对象的小部件取决于您。 – CommonsWare

+0

@ scott.smart:“我明白,当我使用findViewById()时,它会返回一个视图(不是一个小部件)。” - views *是*小部件。小部件是View的某个子类的一个实例,尽管术语“小部件”倾向于不用于像'LinearLayout'这样的容器。 – CommonsWare