2013-06-05 134 views
3

我正在開發一個Android小部件。在小部件中,我有一個文本字段和兩個按鈕。當我按下按鈕1我想的文本字段顯示出一定的文字,如「一個」,如果我點擊按鈕2,文本字段將顯示如「2」更改Android Widget中的TextView文本

中的onUpdate()看起來是這樣的:

@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ super.onUpdate(context, appWidgetManager, appWidgetIds); 

    remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main); 

    Intent intent = new Intent(context, CalculatorReceiver.class); 
    intent.setAction(ACTION_WIDGET_RECEIVER); 
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); 

    PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
    remoteViews.setOnClickPendingIntent(R.id.one, actionPendingIntent); 
    appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); } 

和的onReceive()方法是這樣的:

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

    super.onReceive(context, intent); 

    if(intent.getAction().equals(ACTION_WIDGET_RECEIVER)){ 

     Toast.makeText(context, "Hi I'm 1", Toast.LENGTH_LONG).show(); 

     }} 

現在,在小部件,我只能顯示敬酒時按下的按鈕,但我想要得到的TextView和改變它的價值。我如何獲取和更改textView?

+0

post'activity.xml'。 –

+0

這個問題可能是有用的 [此處輸入鏈路描述] [1] [1]:http://stackoverflow.com/questions/6944553/android-appwidget-textview-not-updating – 2014-01-14 09:04:28

+0

此[問題] [1]可能會有用! [1]:http://stackoverflow.com/questions/6944553/android-appwidget-textview-not-updating – 2014-01-14 09:09:11

回答

4
  • 你不能從你的widget得到的意見值。

  • 您可以通過使用RemoteViews remoteViews.setTextViewText(R.id.text_view_id, "Your text");

+0

嗨,是啊,我知道,但我怎麼更新的TextView如果按下按鈕?我只能識別按鈕使用:remoteViews.setOnClickPendingIntent(R.id.one,actionPendingIntent); actionPendingIntent將實現onReceive()方法。我無法獲取onRecieve()方法中的TextView,因爲它會在Receiver類中給我NullPointerException。 – fullMoon

+0

您可以在'onReceive'方法中再次創建'RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.activity_main)',然後更新文本視圖。或者我錯過了你的問題。 – sromku

+0

之後,也做'appWidgetManager.updateAppWidget(appWidgetId,remoteViews);'。 – Keelan

1

請嘗試添加以下行的onReceive()

remoteViews.setTextViewText(R.id.widget_appNameView更新widget的TextView「文本視圖更新「);

ComponentName componentName = new ComponentName(context, WidgetProvider.class); AppWidgetManager.getInstance(context).updateAppWidget(componentName,remoteViews);