2012-03-16 15 views
6

मैं विभिन्न विजेट ट्यूटोरियल जैसे this one और this oneOnUpdate कभी नहीं कहा जाता है - एंड्रॉयड विजेट

मैं अपने उद्देश्यों के लिए अपने कोड अनुकूल की कोशिश की है, और मैं सीधे-अप कॉपी पेस्ट की कोशिश की है निम्नलिखित की है। ऐसा कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, मेरा विजेट कभी अपडेट नहीं होता है। जब यह होम स्क्रीन पर रखा जाता है तो पाठ उस स्टेटिक टेक्स्ट के रूप में रहता है जो इसे बनाया गया था। मुझे बस इस ऐप की आवश्यकता है 4 टेक्स्ट व्यू अपडेट करें जो लेआउट में निहित होगा।

नीचे दिया गया कोड ज्यादातर ट्यूटोरियल से कॉपी किया गया है। मैंने ऑनडेट विधि को डीबग करने का प्रयास किया है, हालांकि ब्रेक पॉइंट कभी हिट नहीं होता है।

किसी भी मदद की सराहना की जाएगी।

संपादित करें: मैं इस विजेट के एक बहुत ही सरल संस्करण में वापस आ गया था कि मैं अपने प्रयासों में पहले कोशिश कर रहा था और सरल विजेट के लिए कोड के साथ नीचे दिए गए कोड को प्रतिस्थापित कर दिया था। मैंने कॉमन्सवेयर द्वारा मेरे मैनिफेस्ट में सुझाए गए परिवर्तन किए हैं। दुर्भाग्य से समस्या बनी हुई है।

मेरा मुख्य जावा फाइल तो दिखाई देता है:

public class NetStatWidget extends AppWidgetProvider 
{ 

public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds) 
{ 
    ComponentName thisWidget = new ComponentName(context, NetStatWidget.class); 
    int[] widgetId = manager.getAppWidgetIds(thisWidget); 

    RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.appwidget); 
    remoteView.setTextViewText(R.id.textView0, "Hello"); 
    manager.updateAppWidget(widgetId, remoteView); 
} 

} 

मेरे मैनिफ़ेस्ट:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="net.stat" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 


      <receiver android:name="NetStatWidget" > 
       <intent-filter> 
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
       </intent-filter> 
       <meta-data 
        android:name="android.appwidget.provider" 
        android:resource="@xml/providerinfo" /> 
      </receiver> 

    </application> 

</manifest> 

और मेरे विजेट प्रदाता जानकारी:

<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:initialLayout="@layout/main" 
android:minWidth="146dip" 
    android:minHeight="72dip" 
    android:updatePeriodMillis="10000"> 

उत्तर

7

आपका प्रकट है गलत। आप दावा कर रहे हैं कि आपके पास network.widget.AppWidgetProvider वर्ग है, और AFAIK, आप नहीं करते हैं। आपके पास एक अजीब नामित network.widget.NetworkWidgetActivity वर्ग है। आपको अपने <receiver> तत्व में का उपयोग करने की आवश्यकता है। इसके अलावा

:

  • this

  • साथ this.getApplicationContext() और getApplicationContext() बदलें जब तक आप सेवा में और अधिक गंभीर काम कर रही पर योजना (डेटाबेस आई/ओ, नेटवर्क मैं/हे, आदि), केवल onUpdate() में उस तर्क को स्थानांतरित करने और सेवा से छुटकारा पाने पर विचार करें, क्योंकि यह वास्तव में आपको बहुत अधिक खरीद नहीं रहा है (और यदि आप सेवा रखने के लिए जा रहे हैं, तो IntentService पर स्विच करें औरसे छुटकारा पाएंकि जब आप के लिए संभाला है)

  • आप 10 सेकंड के अपडेट के लिए पूछ रहे हैं, कम से कम प्रभावी updatePeriodMillis 30 मिनट है - बस रखें कि मन में जब तुम डिबग कर रहे हैं

  • int[] widgetId अप्रयुक्त हो रहा है NetworkWidgetActivity

  • onStart()Service में कुछ वर्षों से बहिष्कृत किया गया है; onStartCommand() का उपयोग

+0

मैंने आपके सुझाव के अनुसार अपना मैनिफेस्ट बदल दिया और मुझे अभी भी एक ही समस्या है ...मैं एक सरल विजेट पर वापस लौट आया, मैं अपने प्रयासों की शुरुआत में कोशिश कर रहा था, वही परिवर्तन किया और यह एक ही समस्या है। मैंने ऊपर दिए गए कोड को सरल कोड को प्रतिबिंबित किया है। क्या आप एक ही समस्या देखते हैं? – Jodron

+0

@ जोड्रॉन: नहीं, आपके पास एंड्रॉइड 3.0 और उसके बाद क्या काम करना चाहिए। एंड्रॉइड 3.1 और ऊपर, आपको अपने ऐप विजेट के साथ जाने के लिए एक गतिविधि की आवश्यकता है - जब तक उपयोगकर्ता गतिविधि को चलाता है तब तक आपके ऐप विजेट को कोई प्रसारण नहीं मिलेगा। इस निर्देशिका में एक और दो ऐप विजेट नमूने हैं, जिनमें से दोनों काम करते हैं: https://github.com/commonsguy/cw-advandroid/tree/master/AppWidget – CommonsWare

+0

यह बिल्कुल अजीब है। मैं इसे 2.3 पर चला रहा हूं, और यह अभी भी पाठ को अपडेट नहीं करेगा। क्या मैं यह सोचने में गलत हूं कि जैसे ही विजेट को "textView0" रखा गया है, "हैलो" पढ़ना चाहिए? उदाहरणों के लिए धन्यवाद, बीमार उन लोगों को देखो और देखें कि क्या मैं इसे समझ नहीं सकता हूं। मुझे लगता है कि मैं अपने सिर पर हो सकता हूं और इसे सिर्फ एक नियमित ऐप बनाना चाहिए। – Jodron

संबंधित मुद्दे