2011-03-10 14 views
6

मेरे आवेदन में मुझे किसी गतिविधि से किसी सेवा में मूल्य प्राप्त करने की आवश्यकता है। जिस मूल्य को मुझे पुनर्प्राप्त करने की आवश्यकता है वह वह है जिसे मैंने उस गतिविधि में क्लिक किया था।क्या एक बंडल सेवा में पास किया जा सकता है?

उदाहरण के लिए: अगर मैं गतिविधि एक से एक्स [मैं] तत्व का चयन, मैं एक सेवा एस

में मान x [i] को पुनः प्राप्त करने की जरूरत है यह कैसे संभव है?

धन्यवाद,

निकी

उत्तर

7

सेवा उपयोग इस में:

public int onStartCommand (Intent intent, int flags, int startId) 
{ 
    super.onStartCommand(intent, flags, startId); 
    Bundle bundle = intent.getExtras(); 
} 
+0

शून्य वापसी प्रकार तर्कों के साथ संगत नहीं है !!! :( – Niki

+0

'शून्य' वापसी प्रकार int तर्कों के साथ संगत नहीं है !!! :( – Niki

+1

@niki क्षमा करें, इसकी int। आपको कॉपी-पेस्टिंग से बचना चाहिए। वास्तविक प्रोग्रामर प्रकार कोड। और फिर वे त्रुटियों को हल करते हैं।) – Reno

2

जब आप को कोई लक्ष्य बनाते हैं, आप इसे करने के लिए डेटा डाल सकते हैं और एक ही डेटा आशय के साथ स्थानांतरित कर दिया जाएगा जब आप सेवा शुरू करते हैं।

Intent intent = new Intent(context, Class) ; 
intent.putExtra(key, value); 

startService(intent); 

प्राप्त करने वाले अंत में इरादा प्राप्त करें और इससे अतिरिक्त मूल्य प्राप्त करें।

Bundle b = getIntent().getExtra(); 
b.get<ValueType>(key); 
+0

मुझे मेरी सेवा में getIntent() नहीं मिला। – Niki

+0

यदि प्राप्तकर्ता भाग एक गतिविधि है तो आपको getIntent() मिलती है। यहां मेरे मामले में इसकी एक सेवा है। – Niki

+0

@Niki, बंडल बी = getIntent()। GetExtra(); b.getXXX (कुंजी); प्राप्त सेवा वर्ग के ऑनस्टार्ट/ऑनक्रेट विधियों के अंदर बुलाया जाना है। – Vinay

0

आप सेवा में onStartCommand(Intent intent, int flags, int startId) विधि ओवरराइड कर सकते हैं।

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

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