2011-03-18 11 views
22

안드로이드에서 위젯을 만들었지 만 성공적으로 작동하지만 지금은 위젯의 클릭 이벤트에서 사용하여 새로운 활동을 열 수 있습니다.클릭 이벤트에 안드로이드 위젯

나 레이아웃 내부

+1

widget_layout ID로 루트 요소의 LinearLayout이 표. – Mathew

+1

참조 http://stackoverflow.com/questions/2748590/clickable-widgets-in-android –

답변

-3

, 특정 위젯

android:onClick="your method name inside your activity" 

및 활동에

이 줄 줄 도움말 :

public void methodname(View view) { 
     //give your intent code here 
} 

참고 :이 같은 메서드를 호출 할 때, 당신의 메소드는 public이어야하고 View 객체를 매개 변수로 가져야합니다.

+1

android : onClick은 Android 1.6 이상에서만 사용 가능합니다. – Raunak

+0

어떤 Android 버전을 사용하고 있습니까? – Mathew

+1

android : onClick은 위젯에서 지원되지 않습니다. 위젯을 가지고 있다면 위젯은 홈 화면에 나타나지 않을 것입니다 - 위젯을로드하지 못했습니다라는 오류 메시지를 표시합니다 ... – coolcool1994

8

나는 이것을 사용 : 당신은, 바로 같은 답을 찾을 약관을 읽고 동의를하지만, 틱을 놓을 때 widget.xml에서

// Create an Intent to launch ExampleActivity 
     Intent intent = new Intent(context, Mainpage.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 
     remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent); 
+10

그래,하지만 위젯을 클릭 할 때 어디에서 호출할까요? – KalEl

+0

덕분에 ... –

35
@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
        int[] appWidgetIds) { 
    for (int i = 0; i < appWidgetIds.length; i++) { 
     int appWidgetId = appWidgetIds[i]; 

     Intent intent = new Intent(context, TaskManagerActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 
     views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent); 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

나는

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/widget_layout" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:paddingTop="10dip" 
      android:paddingLeft="10dip" 
      android:orientation="vertical"> 
+1

이 나를 위해 일한, 감사합니다. –

+0

안녕하세요 @xtem, 위젯 ID를 탐지하는 데 문제가 있습니다. 내 홈 화면에 3 개의 위젯을 만들었고 각각의 테마를 따로 변경하고 싶습니다. 따라서 위젯을 클릭하면 구성 클래스가 열리 며 onUpdate()를 통해 각 위젯이 업데이트됩니다. 별도로 할 수 있습니까? –

관련 문제