Jak ustawić OnClick w Widgecie w java/android?

0

Próbuję do widgetu wyświetlającego obrazek jeden dodać OnClick i nie wychodzi mi to.
Do OnUpdate próbowałem dać np. takie coś:

		Intent intent = new Intent(context, mojMain.class);
		intent.setAction(ACTION_KLIKNIECIE);
		PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
		
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.layout);
		remoteViews.setOnClickPendingIntent(R.id.imageView1, pendingIntent);
  • metoda
		RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.layout);
		ComponentName componentName = new ComponentName(context, mojMain.class);
		AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
		appWidgetManager.updateAppWidget(componentName, views);

a w OnReceive dałem:

		if (intent.getAction().equals(ACTION_KLIKNIECIE))
		{
			//i coś tam
		}

do manifestu też dodałem "<action android:n..." coś, pod <intent-filter>

I nie chce działać ten cały kod. Klikam w Image i nic. Wiecie co mogę robić źle, czego brakuje? Bardzo proszę o pomoc.

dodanie znaczników <code class="java"> i `` - furious programming

0

A co chcesz osiągnąc, bo nie napisałeś?

0

No to skoro to jest "widok" to masz do niego XML-a, to czemu w tym XML nie ustawisz "android:onClick=..." ?

0

chcę sprawić by kliknięcie w ImageView wykonywało kod jakiś, jednak wszystko co robiłem nie umożliwia mi tego

0

w OnClick podajesz nazwe funkcji ktora chcesz wywolac

0

dobra, chyba już mi działa klikanie, po prostu zrobiłem pętlę i tam update inny podając ID

		// -- klikniecie --
		final int N = appWidgetIds.length;
		for (int i=0; i<N; i++)
		{
		int appWidgetId = appWidgetIds[i];
		
		
		Intent intent = new Intent(context, mojMain.class);
		intent.setAction(ACTION_KLIKNIECIE);
		PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, intent, 0);
		
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.layout);
		remoteViews.setOnClickPendingIntent(R.id.imageView1, pendingIntent);
		
		appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
		}
		// -- klikniecie --

a w OnReceive już normalniej:

		if (intent.getAction().equals(ACTION_KLIKNIECIE))
		{
			MetodaKlikniecie(context);
			System.out.println("KLIKNIETO!!!");
		}

i funkcja klikająca zmieniająca kolor textviewa

	private void MetodaKlikniecie(Context context)
	{
		RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.layout);

		views.setTextColor(R.id.textView1, Color.rgb(255, 0, 0)); //ustawia kolor na czerwony
		
		ComponentName componentName = new ComponentName(context, mojMain.class);
		AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
		appWidgetManager.updateAppWidget(componentName, views);
		
		System.out.println("KLIKNIETO NA POWAZNIE");
	}

dodanie znaczników <code class="java"> - furious programming

0

i dodam, że warto LogCat podglądać, najlepiej wpisując tekst z System.out.println, wtedy widać czy odpala się dana rzecz, na której nam zależy

1 użytkowników online, w tym zalogowanych: 0, gości: 1