2012-11-01 12 views
7

अभी भी एंड्रॉइड में अपने कौशल पर काम कर रहा है।किसी अन्य गतिविधि से डेटा प्राप्त करें

मेरी समस्या यह है कि मेरे पास मेरे डेटाबेस से एक लेबल है जिसमें एक स्पिनर में एक नाम है, जब मैं लेबल पर क्लिक करता हूं, एक संवाद आता है और आपको तीन विकल्प देता है: 1. अद्यतन। 2. हटाएं। 3. रद्द करें। मुझे दूसरे और तीसरे विकल्पों के माध्यम से मिला, लेकिन अद्यतन में इस समस्या का सामना कर रहा है; मैं एक और गतिविधि पर जाता हूं जिसमें एक संपादन टेक्स्ट और 2 बटन हैं, सहेजें और रद्द करें, मैं चाहता हूं कि सहेजें बटन को टेक्स्ट एक्स्ट्रा में संपादन टेक्स्ट से डेटा प्राप्त करें और उसे पिछली गतिविधि पर वापस भेज दें और डेटा के साथ पुराने लेबल को बदलें संपादन टेक्स्ट से।

मैं किसी भी मदद की सराहना करता हूं। अग्रिम धन्यवाद।

+0

आप वरीयताओं के लिए जा सकते हैं या नीचे दी गई अतिरिक्त विधि डाल सकते हैं। – itsrajesh4uguys

+0

एक और गतिविधि को कॉल करने के लिए startActivityForResult का उपयोग करें और परिणाम प्राप्त करें AtctivityResult –

उत्तर

11

अपने दूसरे गतिविधि में, आप विधि getIntent() और फिर getStringExtra(), getIntExtra() साथ पहली गतिविधि से डेटा प्राप्त कर सकते हैं ...

फिर अपने पहली गतिविधि पर लौटने के लिए आप पैरामीटर के रूप में वापस लौटने के लिए इरादे डेटा के साथ setResult() विधि का उपयोग करना होगा।

अपनी पहली गतिविधि में अपनी दूसरी गतिविधि से वापसी डेटा प्राप्त करने के लिए, बस onActivityResult() विधि को ओवरराइड करें और डेटा प्राप्त करने के इरादे का उपयोग करें।

पहले गतिविधि:

//In the method that is called when click on "update" 
Intent intent = ... //Create the intent to go in the second activity 
intent.putExtra("oldValue", "valueYouWantToChange"); 
startActivityForResult(intent, someIntValue); //I always put 0 for someIntValue 

//In your class 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    //Retrieve data in the intent 
    String editTextValue = intent.getStringExtra("valueId"); 
} 

दूसरा गतिविधि:

//When activity is created 
String value = intent.getStringExtra("oldValue"); 
//Then change the editText value 

//After clicking on "save" 
Intent intent = new Intent(); 
intent.putExtra("valueId", value); //value should be your string from the edittext 
setResult(somePositiveInt, intent); //The data you want to send back 
finish(); //That's when you onActivityResult() in the first activity will be called 

मत भूलना startActivityForResult() विधि के साथ अपने दूसरे गतिविधि शुरू करने के लिए।

+1

आपका काम बहुत धन्यवाद। – Tayseer

4

आपको अतिरिक्त जानकारी के रूप में जानकारी पास करनी है।

सूचना

Intent i = new Intent(); 
i.setClassName("com.example", "com.example.activity"); 
i.putExtra("identifier", VALUE); 
startActivity(i); 

सूचना

Bundle extras = getIntent().getExtras(); 
String exampleString = extras.getString("identifier"); 
1

जब आप दूसरी गतिविधि शुरू करना चाहते हो रही पासिंग, startActivityForResult(your intent, request code); का उपयोग अपनी पहली गतिविधि प्रयोग में

protected void onActivityResult(int requestCode, int resultCode, 
      Intent data) { 
     if (requestCode == your_reques_code) { 
      if (resultCode == RESULT_OK) { 
       // do your stuff   
      } 
     } 
} 

खत्म करने से पहले दूसरा ए ctivity न इस भूल जाते हैं,

Intent data = new Intent(); 
data.putExtra("text", edtText.getText()); 
setResult(RESULT_OK, data); 
+0

अच्छा होगा यदि आपके कोड में इसे संकलित करने के लिए आवश्यक सब कुछ शामिल होगा, जैसे 'int RESULT_OK = 1'। कोई स्पष्टीकरण किसी भी स्पष्टीकरण से बेहतर नहीं होगा (विशेष रूप से जब थ्रेड स्टार्टर बताता है कि वे अभी भी अपने कौशल पर काम कर रहे हैं) – winklerrr