0

我有一个活动,在布局中我使用自己的组件。这是我自己的 xml 组件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
     >
    <View 
        android:layout_height="1dp"
        android:layout_width="match_parent"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="3dp"
        android:background="@color/patient_view_border"/>
    <LinearLayout 
     android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="8">
    <ImageView
        android:id="@+id/icons_component"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:src="@drawable/_andr" 
        android:layout_weight="1"/>


</LinearLayout>
</LinearLayout>

我通过将此代码添加到布局我的活动中来将此组件添加到布局我的活动中:

<test.test.IconsComponent
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="horizontal">

现在在我的扩展线性布局的组件类中,我有一个方法来改变图片这个图像:

public void checkActivity(ActivitiesNames name){
    if(name == ActivitiesNames.TEST_EXTRA){
        testIcon.setImageDrawable(getResources().getDrawable(R.drawable.legendaw_andr));
    }
}

在我的活动中,我创建了此组件的对象并通过以下方式使用此方法:

        iconsComp = new IconsComponent(getApplicationContext());
        iconsComp.checkActivity(ActivitiesNames.TEST_EXTRA);

但我没有看到任何变化。如何从组件中的活动更改图标?第二个问题:如何将活动中的一些数据发送到该组件?

4

1 回答 1

1

您所做的更改是在您在代码中创建的新实例上进行的,这不会反映到您的布局中。您需要为您的视图提供一个 ID:

<test.test.IconsComponent
android:id="@+id/my_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="horizontal">

然后不是创建一个新实例:

iconsComp = new IconsComponent(getApplicationContext());

您需要参考已经膨胀的:

iconsComp = (IconsComponent) findViewById(R.id.my_view);
于 2013-07-02T10:15:30.563 回答