2013-01-17 18 views
5

पर पैरामीटर पास करना मैं अपनी सेवा से कॉलरसीवर क्लास में एक इंट वैल्यू पास करने की कोशिश कर रहा हूं, दुर्भाग्यवश CallReceiver.value हमेशा किसी अन्य मान के साथ सेट के बाद भी 0 के बराबर है। जब मैं इसे कन्स्ट्रक्टर स्थिति के पैरामीटर के रूप में पास करने की कोशिश कर रहा हूं, वैसे ही वही है, और इसलिए सेवा से बुलाए गए सेटर विधियों के साथ। क्या कोई डेटा पास करने का कोई रास्ता नहीं है?ब्रॉडकास्ट रिसीवर

सेवा:

SharedPreferences settings = getSharedPreferences("SETTINGS", 0); 
    int value = settings.getInt("value1", 0); // here the correct value is present, not 0. 
    CallReceiver mCallReceiver = new CallReceiver(); 
    CallReceiver.value = value; 

रिसीवर:

public class CallReceiver extends BroadcastReceiver { 

public int value; 

public CallReceiver(int value) { 
    this.value = value; 
} 

public CallReceiver() { 

} 


@Override 
public void onReceive(Context context, Intent intent) { 


      Log.v("value", String.valueOf(value)); // here "value" = 0. 


     } 

    } 
+0

में 'CallReceiver' आप मतलब था' mCallReceiver.value = मूल्य, स्थिर नहीं है अपने 'मान' क्षेत्र,' 'बजाय CallReceiver.value = मूल्य का;'? –

उत्तर

9

आपका CallReceiver mCallReceiver=new CallReceiver(); उदाहरण उद्देश्यों को प्राप्त करने के लिए इस्तेमाल नहीं कर रहा है। इसके बजाए, एंड्रॉइड हर बार नया उदाहरण बनाता है। और 0 अनियमित पूर्णांक चर के लिए डिफ़ॉल्ट मान है।

यकीन है कि यह अपने value क्षेत्र के लिए कुछ डिफ़ॉल्ट मान असाइन करते हैं, क्या होता है बनाने के लिए:

public class RReceiver extends BroadcastReceiver { 
    public int value=5; 
    //... 
} 

और अपने मूल्य हमेशा रहेंगे बराबर 5.

BroadcastReceiver करने के लिए डेटा पारित करने के लिए के रूप में, इसे जोड़ने

//in your service 
Intent broadcastedIntent=new Intent(this, CallReceiver.class); 
broadcastedIntent.putExtra("VALUE", 100500); 
sendBroadcast(broadcastedIntent); 

और फिर, अपनेमें: के रूप में Intent आप प्रसारण कर रहे हैं अतिरिक्त 210:

@Override 
public void onReceive(Context context, Intent intent) { 
    int value=intent.getIntExtra("VALUE", 0); 
} 
+0

'कॉल रेसीवर' यहां प्रश्न में कक्षा भी नहीं है। जिस मूल्य को वह बदलना चाहता है वह 'RReceiver' –

+0

में है, तो क्या कोई मूल्य भेजने का कोई तरीका नहीं है? – Kristopher

+0

@soulreaver आपको इस मूल्य को उस 'इरादे' के अतिरिक्त के रूप में रखना चाहिए जिसे आप अपनी सेवा से प्रसारित कर रहे हैं। –

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