首先,我很抱歉我的英语不好。如何设置RemoteViews .setViewVisibility?我想点击它时隐藏小部件按钮。 这是我的代码。谢谢你的帮助。
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++){
int appId = appWidgetIds[i];
widget = new RemoteViews(context.getPackageName(), R.layout.widget_wyglad);
Intent Tv = new Intent(context, client_widget.class);
Tv.setAction(AKCJA);
Tv.putExtra("test", AKCJA);
PendingIntent ptv = PendingIntent.getBroadcast(context, 0, Tv, 0);
widget.setOnClickPendingIntent(R.id.bt_wid_tv, ptv);
appWidgetManager.updateAppWidget(appId, widget);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null){
widget.setViewVisibility(R.id.bt_wid_tv, View.GONE);
}
else {Log.d("ERR", "EXTRAS ELSE");}
super.onReceive(context, intent);
}
}
答案 0 :(得分:2)
你已经做了一切关于隐藏视图的事情。只需在代码中包含它 -
在你的onReceive方法 -
if (intent.getAction().equals(AKCJA)) {
widget.setViewVisibility(R.id.bt_wid_tv, View.GONE);
}
答案 1 :(得分:-1)
您是否尝试过使用INVISIBLE
代替GONE
? Gone将删除视图,就好像它从未出现过一样。隐形会保持视图在布局中的位置,但会使其不可见。
rv.setViewVisibility(R.id.bt_wid_tv, View. INVISIBLE);
答案 2 :(得分:-2)
是的,它终于奏效了, 我改变了什么:
int appId = appWidgetIds[i];
更改为:
appId = appWidgetIds[i];
接下来我添加静态int appId:
public class client_widget extends AppWidgetProvider {
static int appId;
最后添加这个新的AppWidgetManager和更新行:
public void onReceive(Context context, Intent intent) {
AppWidgetManager newAppWidgetManager = AppWidgetManager.getInstance(context);
if (intent.getAction().equals(AKCJA)) {
AppWidgetManager nowy = AppWidgetManager.getInstance(context);
widget.setViewVisibility(R.id.bt_wid_tv, View.GONE);
newAppWidgetManager.updateAppWidget(appId, widget);
谢谢@Naddy