2012-08-23 100 views
4

我正在開發的Android窗口小部件,我顯示在該控件的一些數據,從網絡服務,其工作fine.Hear是該代碼。如何更新Android上按鈕點擊小部件的視圖?

CODE

public class WatchWidget extends AppWidgetProvider{ 


    private static final String TAG = "WatchWidget"; 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ 
     Log.i(TAG, "* onUpdate"); 


     EBWeaterData ebwd=new EBWeaterData(); 

     EBWeatreUtils.getWeatherFeeds(context, ebwd, "my url to get data"); 

     RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main); 
     RemoteViews newView = new RemoteViews(context.getPackageName(), R.layout.test); 

     //get data 
     String day=ebwd.getDay_1()+ebwd.getDay_suffix_1()+" "+ebwd.getDay_name_1(); 
     String minmaxtemp="Max Temp "+ebwd.getDay_max_temp_1()+"°C "+"Min Temp "+ebwd.getDay_min_temp_1()+"°C"; 

     //set dat to views 
     newView.setTextViewText(R.id.textView_day_name, day); 
     newView.setTextViewText(R.id.textView_minmaxtemp, minmaxtemp); 
     newView.setImageViewResource(R.id.ImageView_icon, R.drawable.sunny); 

     views.addView(R.id.view_container, newView);  
     ComponentName thisWidget = new ComponentName(context,WatchWidget.class); 
     AppWidgetManager manager = AppWidgetManager.getInstance(context); 
     manager.updateAppWidget(thisWidget, views); 

    } 

} 

我對那個小部件的按鈕現在我想更新時,在button.I用戶點擊知道我用它做的PendingIntent像下面不同的值小工具視圖。

 Intent intent = new Intent(context, activitytogetNewdata.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 
     views.setOnClickPendingIntent(R.id.imageView1, pendingIntent); 

但它會啓動另一個活動,我不想去花葯activity.I只需要做的就是更新按鈕click.Any理念後的新值相同的小工具視圖?

回答

2

我發現我的code.when我要更新使用的PendingIntent,它將動態地對每一個按鈕,點擊添加視圖我的看法,因爲我已經使用2佈局聽到,所以我的問題解決了如下問題。(我使用一種佈局,而不是使用兩個)

CODE

public class WatchWidget extends AppWidgetProvider{ 


    private static final String TAG = "WatchWidget"; 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ 
     Log.i(TAG, "* onUpdate"); 


     EBWeaterData ebwd=new EBWeaterData(); 

     EBWeatreUtils.getWeatherFeeds(context, ebwd, "my url to get data"); 


     RemoteViews newView = new RemoteViews(context.getPackageName(), R.layout.test); 

     //get data 
     String day=ebwd.getDay_1()+ebwd.getDay_suffix_1()+" "+ebwd.getDay_name_1(); 
     String minmaxtemp="Max Temp "+ebwd.getDay_max_temp_1()+"°C "+"Min Temp "+ebwd.getDay_min_temp_1()+"°C"; 

     //set dat to views 
     newView.setTextViewText(R.id.textView_day_name, day); 
     newView.setTextViewText(R.id.textView_minmaxtemp, minmaxtemp); 
     newView.setImageViewResource(R.id.ImageView_icon, R.drawable.sunny); 


     ComponentName thisWidget = new ComponentName(context,WatchWidget.class); 
     AppWidgetManager manager = AppWidgetManager.getInstance(context); 
     manager.updateAppWidget(thisWidget, newView); 

    } 
+0

你的刷新按鈕在哪裏? – natsumiyu

0

通過這個教程。

訪問http://www.developer.com/ws/android/programming/Handling-User-Interaction-with-Android-App-Widgets-3837531.htm

他們已經解決了,你有什麼問題。

+0

確定這將更新是細相同的視圖。但我怎樣才能爲視圖設置新的值?我的意思是按一下按鈕後,我想設置的值一樣newView.setTextViewText(R.id.textView_day_name,第1天); insted day.so我想檢測按鈕點擊事件。 –

+0

Anupam可以發佈代碼嗎? –

+0

重複的問題。檢查鏈接:[鏈接] http://stackoverflow.com/questions/11907928/android-app-widget-button-to-change-textview-content – Anupam

相關問題