从片段webview javascript更新活动imageview

从片段webview javascript更新活动imageview,javascript,android,android-fragments,webview,Javascript,Android,Android Fragments,Webview,有一个活动扩展了RoboFragmentActivity,它的主要UI是一个ViewPager,包含3个片段,xml如下: <android.support.v4.view.ViewPager android:id="@+id/goods_details_vp" android:layout_width="wrap_content" android:layout_height="0dp"

有一个活动扩展了RoboFragmentActivity,它的主要UI是一个ViewPager,包含3个片段,xml如下:

    <android.support.v4.view.ViewPager
                android:id="@+id/goods_details_vp"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_gravity="center"
                android:layout_weight="1.0"
                android:background="@color/white"
                android:flipInterval="30"
                android:persistentDrawingCache="animation" />
   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:background="#cc000000"
        android:orientation="horizontal"
        android:paddingLeft="10dp" >

        <RelativeLayout
            android:id="@+id/collection_view_lay"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_margin="4dp"
            android:layout_weight="2" >

            <ImageView
                android:id="@+id/collection_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:src="@drawable/icon_goods_detials_collct_common" />
        </RelativeLayout>
 </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/goods_details"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</WebView>
活动中的回调方法:

    @Override
    public void setCollectionStatus(String str) {
        // TODO 设置收藏图标
        if ("true".equals(str)) {
            collectionView
                    .setImageResource(R.drawable.icon_goods_detials_collct_pressed);
        } else {
            collectionView
                    .setImageResource(R.drawable.icon_goods_detials_collct_common);
        }
    }
现在,问题是,如果我将collectionView设置为setImageResource,片段将全部消失。该方法已经运行,我甚至可以将上面的str设置为“true”。如果我将上面的代码更改为:

@Override
    public void setCollectionStatus(String str) {
        Log.e("tag", str);
    }

日志运行得很好。我对这个问题感到困惑,希望你能帮助我。非常感谢。

哦,无法从子视图更新父视图,因此我们需要在回调方法中添加一个
runOnUiThread
。代码如下:

 @Override
        public void setCollectionStatus(final String str) {
            goodsDetailsActivity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if ("true".equals(str)) {
                        collectionView
                                .setImageResource(R.drawable.icon_goods_detials_collct_pressed);
                    } else {
                        collectionView
                                .setImageResource(R.drawable.icon_goods_detials_collct_common);
                    }
                }
            });
        }
 @Override
        public void setCollectionStatus(final String str) {
            goodsDetailsActivity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if ("true".equals(str)) {
                        collectionView
                                .setImageResource(R.drawable.icon_goods_detials_collct_pressed);
                    } else {
                        collectionView
                                .setImageResource(R.drawable.icon_goods_detials_collct_common);
                    }
                }
            });
        }