2

Android 4.0 で独自の Android ウィジェットを作成し、正常に実行しました。テストのために Android 2.2 で実行しましたが、ウィジェットが表示されませんでした。メッセージを表示しProblem Loading Widgetます。最小およびターゲットSDKを次のように設定しました

<uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />

私のレイアウト XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widgetLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/new_widget_bg"
    android:gravity="right" >


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >
         <LinearLayout
            android:id="@+id/title_holder"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
             <LinearLayout
                android:id="@+id/image_holder"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="8" >

                <ImageView
                    android:id="@+id/widget_refresh_button"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/addwidbutton" />

                <ProgressBar
                    android:id="@+id/widget_loading"
                    style="?android:attr/progressBarStyleSmall"
                    android:layout_width="wrap_content"
                    android:layout_height="32dp"
                    android:visibility="gone" />
            </LinearLayout>
            <LinearLayout
                android:id="@+id/main_title_holder"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1" >

 <TextView
     android:id="@+id/title"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center_vertical"
     android:layout_weight="1"
     android:maxLines="1"
     android:text="Default Project"
     android:textAppearance="?android:attr/textAppearanceSmall"
     android:textColor="#ff00a2ff"
     android:textStyle="bold" />

                <RelativeLayout
                    android:layout_width="fill_parent"
                    android:layout_height="match_parent"
                    android:layout_centerHorizontal="true"
                    android:layout_weight="1.75"
                    android:paddingBottom="5dp"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:paddingTop="5dp" >

                    <Button
                        android:id="@+id/widget_hrs"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_gravity="center"
                        android:layout_weight="2.5"
                        android:background="@drawable/hrs_bg"
                        android:drawableLeft="@drawable/clock"
                        android:maxLines="1"
                        android:text=" --:--"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:textColor="#ffffff"
                        android:textStyle="bold" />

                </RelativeLayout>
            </LinearLayout>
        </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="1sp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/linearLayout1"
        android:background="#66ffffff" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/linearLayout2" >

        <LinearLayout
            android:id="@+id/LinearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/widget_project"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:text="project_name"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textColor="#ffffff"
                android:textStyle="bold" />



            <TextView
                android:id="@+id/widget_error"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:text="Error Message comes here"
                android:textColor="#ff0000"
                android:textStyle="bold"
                android:visibility="gone" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/LinearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2.25"
            android:orientation="vertical" >

            <Button
                android:id="@+id/widget_button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/blue_button"
                android:ellipsize="marquee"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:marqueeRepeatLimit="marquee_forever"
                android:maxLines="1"
                android:scrollHorizontally="true"
                android:singleLine="true"
                android:text="start"
                android:textColor="#ffffff" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
</RelativeLayout>

ウィジェット - onReceive メソッド

AppWidgetManager manager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, MainWidget.class);
RemoteView remoteViews = new RemoteViews(context.getPackageName(),
                R.layout.main_widget);
remoteViews.setViewVisibility(R.id.widget_refresh_button, View.GONE);
remoteViews.setViewVisibility(R.id.widget_loading, View.VISIBLE);
manager.updateAppWidget(thisWidget, remoteViews);

このメソッドを呼び出すと、ウィジェットが機能しなくなります...

そして、Logcat でこの問題に関するメッセージに気付かなかった

これを行うための最良の方法を教えてください...

4

1 に答える 1

1

長い道のりとエラーの後、私は間違いを見つけました。この行を使用remoteViews.setViewVisibility(R.id.widget_loading, View.VISIBLE); したため、ウィジェットが表示されません。setViewVisibilityコードからすべての行を削除しました。今その表示.....

于 2013-06-28T03:12:38.787 に答える