2012-11-20 2 views
1

일부 rss 피드를 표시하는 앱 위젯이 있습니다. 뉴스 제목과 이미지보기를 표시하는 텍스트보기가 포함되어 있습니다. 위젯에서 두 개의 버튼을 추가하고 싶습니다. follwing을 다음과 뉴스 titles.I을 탐색하기 이전이 활동에서이 작업을 수행 할 수 있지만 내가 어떻게 여기 앱 위젯 용 onclick 수신기 구현

위젯

에서이 버튼을위한 온 클릭 리스너를 구현할 수있는 방법을 알고 내 XML =>

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
<ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:scaleType="centerCrop" 
      android:src="@drawable/logo" /> 
<ImageView 
      android:id="@+id/imageView2" 
      android:layout_width="wrap_content" 
      android:layout_height="100dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/imageView1" 
      android:scaleType="centerCrop" 
      android:src="@drawable/titlebg2" /> 
<ImageView 
      android:id="@+id/imageView3" 
      android:layout_width="wrap_content" 
      android:layout_height="2dp" 
      android:layout_below="@+id/imageView2" 
      android:layout_centerHorizontal="true" 
      android:scaleType="centerCrop" 
      android:src="@drawable/foot" /> 
<ImageView 
      android:id="@+id/imageView4" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignTop="@+id/imageView2" 
      android:layout_marginLeft="5dp" 
      android:layout_marginTop="5dp" 
      android:scaleType="centerCrop" 
      android:src="@drawable/img" /> 
<Button 
      android:id="@+id/next" 
      android:layout_width="30dp" 
      android:layout_height="30dp" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/imageView1" 
      android:layout_marginRight="3dp" 
      android:layout_marginTop="3dp" 
      android:background="@drawable/up" /> 


     <TextView 
      android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@+id/up" 
      android:layout_alignBottom="@+id/up" 
      android:layout_marginLeft="16dp" 
      android:layout_marginRight="25dp" 
      android:layout_toRightOf="@+id/imageView4" 
      android:text="TextView" 
      android:textColor="#ffff" /> 
     <Button 
      android:id="@+id/previous" 
      android:layout_width="30dp" 
      android:layout_height="30dp" 
      android:layout_alignBottom="@+id/imageView2" 
      android:layout_alignLeft="@+id/up" 
      android:layout_marginBottom="3dp" 
      android:background="@drawable/down" /> 

    </RelativeLayout> 

</LinearLayout> 

은 내 onupdate 함수, =>

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
     { 

     parse();//Here Iam parsing the xml 
     RemoteViews remoteViews; 
      ComponentName watchWidget; 


      remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_main); 
      watchWidget = new ComponentName(context, madhyamambig.class); 

      remoteViews.setTextViewText(R.id.title, Title[0]); 


      Bitmap bitmap; 
      try { 
       bitmap = BitmapFactory.decodeStream((InputStream)new URL(image[0]).getContent()); 


       remoteViews.setImageViewBitmap(R.id.imageView4, bitmap); 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
          appWidgetManager.updateAppWidget(watchWidget, remoteViews); 

     } 
활동에

, 우리는 단순히

답변

2

당신은 사용할 수 있습니다 .. 사전에 ... 내가 좀 도와주세요 widget.Somebody에서 동일하게 구현하려면,이 같은 감사를

 int i=0; 
     next.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 


Bitmap bitmap; 
       try { 
        bitmap = BitmapFactory.decodeStream((InputStream)new  URL(image[i+1]).getContent()); 


        remoteViews.setImageViewBitmap(R.id.imageView4, bitmap); 
       } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
           appWidgetManager.updateAppWidget(watchWidget, remoteViews); 

      } 
      } 


     }); 

을 수행 할 수 있습니다 RemoteViews.setOnClickPendingIntent 방법.

그런 다음 서비스, 브로드 캐스트 수신기 또는 서비스에 걸려 올 PendingIntent을 실행하십시오. 이 인 텐트가 목표로하는 컨텍스트는 RemoteView를 다시 사용하여 소스 위젯을 조작 할 수 있습니다.

클릭 프로세싱은 여기에 걸린 모든 것이 원격 프로세스에서 UI 요소를 조작하기 때문에 조금 더 복잡합니다.

+0

도움을 주셔서 대단히 감사합니다. 선발 신분으로 더 자세하게 설명해 주실 수 있습니까? ... –

+0

무슨 버그입니까? – Snicolas

+0

코드 스 니펫을 제공하면 쉽게 이해할 수 있습니다. –