Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड पर startActivityForResult कैसे प्रबंधित करें?

एंड्रॉइड में एक्टिविटी परिणाम संभालना - आधुनिक API

नोट: startActivityForResult / onActivityResult **API 30 (Android 11) में डिप्रिकेट** हो गया है। आधुनिक विकल्प **Activity Result APIs** (ActivityResultContracts) है जो androidx.activity:activity:1.8.0+ में पेश किया गया है।

निर्भरता

dependencies {
    implementation "androidx.activity:activity:1.8.2"
    implementation "androidx.fragment:fragment:1.6.2"
}

आधुनिक दृष्टिकोण: Activity Result API

1. लॉन्चर पंजीकृत करें (गतिविधि/फ्रैगमेंट में)

public class MainActivity extends AppCompatActivity {

    // सरल परिणाम के लिए (स्ट्रिंग वापस)
    private final ActivityResultLauncher launcher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            result -> {
                if (result.getResultCode() == RESULT_OK && result.getData() != null) {
                    String returned = result.getData().getStringExtra("result");
                    TextView tv = findViewById(R.id.tvResult);
                    tv.setText("परिणाम: " + returned);
                }
            });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.btnLaunch).setOnClickListener(v -> {
            Intent intent = new Intent(this, SecondActivity.class);
            launcher.launch(intent);
        });
    }
}

2. द्वितीय एक्टिविटी (परिणाम सेट करती है)

public class SecondActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        // उदाहरण: तुरंत परिणाम वापस करें
        Intent result = new Intent();
        result.putExtra("result", "SecondActivity से डेटा");
        setResult(RESULT_OK, result);
        finish();
    }
}

अन्य उपयोगी कॉन्ट्रैक्ट्स

कॉन्ट्रैक्टइनपुटआउटपुटउपयोग-मामला
TakePicture()Uri (आउटपुट फ़ाइल)Booleanकैमरा फोटो
PickContact()VoidUriसंपर्क चुनें
GetContent()String (MIME)Uriफाइल/इमेज चुनें
RequestPermission()String (परमिशन)Booleanरनटाइम परमिशन
RequestMultiplePermissions()String[]Mapएकाधिक परमिशन

लीगेसी कोड (केवल संदर्भ के लिए)

// डिप्रिकेट - नए कोड में उपयोग न करें
startActivityForResult(intent, REQUEST_CODE);
// ...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { ... }
}

माइग्रेशन चेकलिस्ट

  1. निर्भरताएं जोड़ें (activity, fragment)।
  2. registerForActivityResult के साथ लॉन्चर पंजीकृत करें (गतिविधि/फ्रैगमेंट में शीर्ष स्तर पर)।
  3. launcher.launch(intent) के साथ लॉन्च करें।
  4. कॉलबैक में परिणाम संभालें।
  5. पुराने startActivityForResult/onActivityResult को हटाएं।

सर्वोत्तम अभ्यास

  • लॉन्चर को **फील्ड** के रूप में पंजीकृत करें, onCreate के अंदर नहीं — यह कॉन्फिगरेशन परिवर्तनों पर जीवित रहता है।
  • प्रकार-सुरक्षित परिणामों के लिए विशिष्ट कॉन्ट्रैक्ट्स (TakePicture, PickContact) का उपयोग करें।
  • फ्रैगमेंट्स के लिए, registerForActivityResult (Fragment 1.3+ में उपलब्ध) का उपयोग करें।
  • परिणाम डेटा को पार्स करने से पहले नल-चेक करें।

परीक्षण

  1. ऐप चलाएं, "लॉन्च" दबाएं → SecondActivity खुलती है, तुरंत परिणाम के साथ समाप्त होती है।
  2. MainActivity टेक्स्ट व्यू में "परिणाम: SecondActivity से डेटा" दिखाता है।
  3. घुमाएं → लॉन्चर पुनः पंजीकृत होता है, कोई लीक नहीं।
  1. Android लोकेशन सेटिंग्स कैसे प्रबंधित करें Android लोकेशन सेटिंग्स कैसे प्रबंधित करें

    आपका लोकेशन डेटा संवेदनशील है। और जब आप अपनी जेब में स्मार्टफोन रखते हैं, तो आपको हर समय ट्रैक किया जा रहा होता है। डेटा संवेदनशील होने का मतलब यह नहीं है कि यह स्वाभाविक रूप से अच्छा या बुरा है, बस यह कि आपको पता होना चाहिए कि इसे कैसे प्रबंधित किया जाए। सौभाग्य से, आपके Android फोन में आपके लोकेशन

  1. एंड्रॉइड पर अपने नोटिफिकेशन कैसे प्रबंधित करें एंड्रॉइड पर अपने नोटिफिकेशन कैसे प्रबंधित करें

    क्या आप अपने एंड्रॉइड डिवाइस पर नोटिफिकेशन ओवरलोड से निपटते हैं? इन अलर्ट को एक-एक करके चेक करना समय की बड़ी बर्बादी है। फोकस्ड रहने के लिए, आपको इन रुकावटों को अधिक कुशलता से प्रबंधित करने की आवश्यकता है। इस पूर्ण गाइड में, हम सबसे आम नोटिफिकेशन मुद्दों के समाधान लाते हैं और आपको दिखाते हैं कि एंड्

  1. एंड्रॉयड फाइल मैनेजमेंट में मास्टर करें: कुशलतापूर्वक व्यवस्थित, एक्सेस और स्टोर करें एंड्रॉयड फाइल मैनेजमेंट में मास्टर करें: कुशलतापूर्वक व्यवस्थित, एक्सेस और स्टोर करें

    आजकल स्मार्टफोन्स में बड़े स्टोरेज मिलने के साथ, हम अपने एंड्रॉयड पर बहुत सारा सामान सेव करते जाते हैं। हम मैनेजमेंट को नजरअंदाज कर देते हैं और इस तरह, सभी फाइलें जमा होकर गड़बड़ दिखने लगती हैं। फोन एक ऐसी जगह होनी चाहिए जहां सभी फाइलें व्यवस्थित हों ताकि जरूरत के समय कुछ भी ढूंढा जा सके। एंड्रॉयड इ