繁体   English   中英

Android小部件布局,Android还是Eclipse错误?

[英]Android widget layout, Android or eclipse bug?

我有一个包含ButtonTextView的小部件。 Button被点击Activity1将会显示出来,并且当TextView点击Activity2将被显示。 另外,当用户返回主屏幕时,文本将添加到TextView

一切都很好,直到我决定改为同时更改按钮和文本,然后再按“ BOOM!”。

当我更改小部件的xml布局时,一切都被撤消了。 我的意思是,当用户单击Button ,将显示Activity2 ,而当单击TextView时,将显示Activity1 即使用户返回主屏幕,文本也会显示在Button

我取消了更改,一切恢复为第一种情况,但文本仍显示在按钮中。 然后我做了清理和构建,但没有任何改变。 最后,经过一些测试,我删除了“ gen”文件并运行了项目,这次它又回到了初始状态。 因此,我尝试再次实施相同的更改,但遇到了相同的问题。

我想一起更改ButtonTextView ,但是我不知道该怎么做。 任何机构都有解决方案吗? 提前致谢。

编辑:添加代码

WidgetProvider:

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>

这似乎是一个错误,我解决了我的问题:
我强行进行了更改,然后在xml布局中更改了一个视图的ID,并确实保存了所有内容(在Eclipse中为Ctrl + shift + s )。然后再次将其值恢复为之前的值并保存了所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM