2013-07-20 52 views
0

嗨,首先,我很抱歉我的英语不好。如何设置RemoteViews .setViewVisibility?当我点击它时我想隐藏小部件按钮。 这是我的代码。感谢帮助。如何设置Widget按钮的可见性?

@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

你已经做好了关于隐藏视图的所有事情。只是这包括在你的代码 -

在你的onReceive方法 -

if (intent.getAction().equals(AKCJA)) { 
widget.setViewVisibility(R.id.bt_wid_tv, View.GONE); 
} 
+0

我尝试这两种解决方案并没有什么happend。 我应该尝试更新插件后: widget.setViewVisibility(R.id.bt_wid_tv,View.GONE) – Gillven

+0

yes..exactly..after改变视图始终使用此代码 - appWidgetManager.updateAppWidget(APPID,窗口小部件) ; – Naddy

-1

您是否尝试过使用INVISIBLE代替GONE?完成后将删除该视图,就好像它从未存在一样。隐形将在布局中占据视图的位置,但使其不可见。

rv.setViewVisibility(R.id.bt_wid_tv, View. INVISIBLE); 
-2

是的它终于工作, 有什么我改变:

int appId = appWidgetIds[i]; 

变化:

appId = appWidgetIds[i]; 

下一个我添加静态INT的appid:

public class client_widget extends AppWidgetProvider { 

static int appId; 

最后添加这个新的A ppWidgetManager和更新行:

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

相关问题