1

と を含むウィジェットがButtonありTextViewます。ButtonをクリックActivity1すると が表示され、をTextViewクリックActivity2すると が表示されます。また、ユーザーがホーム画面に戻ると、テキストが に追加されますTextView

代わりにボタンとテキストを一緒に変更してから「ブーム!」

ウィジェットのxmlレイアウトを変更すると、すべてが逆になりました。つまり、ユーザーが をクリックすると が表示され、 がクリックさButtonれるとActivity2が表示されます。ユーザーがホーム画面に戻っても、テキストが に表示されます。TextViewActivity1Button

変更をキャンセルしたところ、テキストがボタンに表示されたままだったことを除いて、すべてが最初のケースに戻りました。その後、 Clean & Buildを実行しましたが、何も変わりませんでした。最後に、いくつかのテストの後、「gen」ファイルを削除してプロジェクトを実行すると、今度は初期状態に戻りました。そのため、同じ変更を再度実装しようとしましたが、同じ問題が発生しました。

Buttonとを一緒に変更したいのですがTextView、方法がわかりません。どの体にも解決策がありますか?前もって感謝します。

編集:コードを追加

ウィジェットプロバイダー:

public class DictionWidgetProvider extends AppWidgetProvider {

private RemoteViews views;
private RemoteViews hideViews;

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    System.out.println("Update");

    for (int i = 0; i < appWidgetIds.length; i++) {
        int appWidgetId = appWidgetIds[i];

        registeOnClickForElements();
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

@Override
public void onReceive(Context context, Intent intent) {

    if (App.HIDE_WIDGETS.equals(intent.getAction())) {
        hideWidgetInstances();
    } else if (App.UPDATE_WIDGET_STATIC_TEXT.equals(intent.getAction())) {
        String name = "lastWord";
        String lastWord = intent.getExtras().getString(name);
        views = new RemoteViews(context.getPackageName(),
                R.layout.widgetlayout);
        AppWidgetManager mManager = AppWidgetManager.getInstance(App
                .getContext());
        ComponentName cn = new ComponentName(App.getContext(),
                DictionWidgetProvider.class);
        registeOnClickForElements();
        views.setTextViewText(R.id.widgettextview, lastWord);
        mManager.updateAppWidget(cn, views);
    } else {
        super.onReceive(context, intent);
    }

}

private void hideWidgetInstances() {
    hideViews = new RemoteViews(App.getContext().getPackageName(),
            R.layout.hide);
    AppWidgetManager mManager = AppWidgetManager.getInstance(App
            .getContext());
    ComponentName cn = new ComponentName(App.getContext(),
            DictionWidgetProvider.class);
    mManager.updateAppWidget(cn, hideViews);
}

private void registeOnClickForElements() {

    views = new RemoteViews(App.getContext().getPackageName(),
            R.layout.widgetlayout);
    // register on click for text view:
    Intent sampleActivityIntent = new Intent(App.getContext(),
            SampleActivity.class);
    sampleActivityIntent.setAction(App.WIDGET_TEXTVIEW_CLICKED);
    PendingIntent sampleActivityPendingIntent = PendingIntent.getActivity(
            App.getContext(), 0, sampleActivityIntent, 0);
    views.setOnClickPendingIntent(R.id.widgettextview,
            sampleActivityPendingIntent);

    // register on click for "openDictionary" button:
    String category = "requesterFromWidget";
    Intent dictionActivityIntent = new Intent(App.getContext(),
            DictionActivity.class);
    dictionActivityIntent.setAction(App.WIDGET_OPEN_DICTIONARY_CLICKED);
    dictionActivityIntent.addCategory(category);
    PendingIntent dictionActivityPendingIntent = PendingIntent.getActivity(
            App.getContext(), 0, dictionActivityIntent, 0);
    views.setOnClickPendingIntent(R.id.openDictionary,
            dictionActivityPendingIntent);
}

}

レイアウト:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="250dp"
    android:layout_height="60dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/widgettextview"
            android:layout_width="160dp"
            android:layout_height="25dp"
            android:text="search" />

        <Button
            android:id="@+id/speaker"
            android:layout_width="30dp"
            android:layout_height="25dp"/>

        <Button
            android:id="@+id/openDictionary"
            android:layout_width="30dp"
            android:layout_height="25dp" />
    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:src="@drawable/splitter" />

</LinearLayout>
4

1 に答える 1

0

バグのようで、問題を解決し
ました。変更を強制し、xml レイアウトでビューの ID を変更し、すべてを保存しました ( Ctrl + shift + sEclipse で)。その後、値を以前の値に戻し、すべてを保存しました。

于 2012-06-14T16:30:52.857 に答える