2011-03-18 6 views
22

मैंने एंड्रॉइड में विजेट बनाया है और यह सफलतापूर्वक काम करता है, लेकिन अब मैं विजेट के क्लिक इवेंट पर उपयोग करना चाहता हूं ताकि मैं उससे नई गतिविधि खोल सकूं।क्लिक ईवेंट पर एंड्रॉइड विजेट

सहायता मुझे

+1

आईडी के साथ मूल तत्व 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 
} 

नोट: जब आप इस तरह की एक विधि कॉल, आपकी विधि सार्वजनिक होनी चाहिए और इसमें दृश्य वस्तु को पैरामीटर के रूप में होना चाहिए।

+1

एंड्रॉइड: ऑनक्लिक केवल एंड्रॉइड 1.6+ – Raunak

+0

पर उपलब्ध है जो एंड्रॉइड संस्करण आप उपयोग कर रहे हैं? – Mathew

+1

एंड्रॉइड: ऑनक्लिक विजेट्स में समर्थित नहीं है। यदि आपके पास यह है, तो विजेट होम स्क्रीन में भी दिखाई नहीं देगा - यह त्रुटि संदेश प्रदर्शित करेगा जो विजेट लोड करने में विफल रहा है ... – coolcool1994

8

मैं इस प्रयोग किया है:

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

widget.xml में मैं जब आप सही रूप में किसी भी सवाल का जवाब मिल जाए, इसे स्वीकार लेकिन टिक डाल widget_layout

<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, मुझे विजेट आईडी का पता लगाने में समस्या का सामना करना पड़ रहा है। मैंने अपनी होम स्क्रीन पर 3 विजेट बनाए और मैं प्रत्येक की थीम को अलग से बदलना चाहता हूं। तो जब मैं विजेट पर क्लिक करता हूं तो मेरा कॉन्फ़िगरेशन क्लास खोला जाता है और अद्यतन() पर मेरे प्रत्येक विजेट अपडेट होते हैं। क्या मैं इसे अलग से कर सकता हूं? –