How to update view of a widget on button click in android?

android, android-pendingintent, android-widget

Solution

I have found the problem of my code.when i going to update my view using pendingintent it will dynamically add view on each and every button click because i have used 2 layout hear so i solved the problem as follows.(i use one layout instead of using two)

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);

    }

Problem

i am developing android widget and i displayed some data on that widget from web service and its working fine.Hear is the code for that. 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); } } ``` i have a button on that widget now i want to update the widget view with different values when user clicks on the button.I know I have to do with it pendingIntent like following. ``` Intent intent = new Intent(context, activitytogetNewdata.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); views.setOnClickPendingIntent(R.id.imageView1, pendingIntent); ``` But it will start another activity i dont want to go to anther activity.I just need to do is to update the same widget view with new values after button click.Any Idea??

Original source