অ্যান্ড্রয়েড: কীভাবে কোনও ক্রিয়াকলাপ তার ক্রিয়াকলাপের পুনরায় ফলাফল তৈরি করবে?


128

আমার একটি Locationক্রিয়াকলাপ রয়েছে যা অনেক ক্রিয়াকলাপ থেকে কল করা যেতে পারে, যেমন Sign upএবং Order। ইন Locationকার্যকলাপ ব্যবহারকারী, তার অবস্থান প্রবেশ তাই কার্যকলাপ Locationকার্যকলাপ যা এটা বলা এই নতুন অবস্থানে ফিরে আসবে।

সুতরাং যখন Sign upক্রিয়াকলাপটি ক্রিয়াকলাপটিকে কল করে Location, তখন এটি কার্যকলাপে ডেটা ফিরিয়ে দিতে হয় Sign up। অন্য সময় Orderক্রিয়াকলাপ একই জিনিস করবে।

বিঃদ্রঃ

আমি জানি আপনি আমাকে বলবেন যে আমার কোডটি পোস্ট করা উচিত, তবে আমি আপনাকে কোডটি দিতে বলছি না; আমি কেবল কিছু টিপস, লিঙ্ক বা ভাল থ্রেড চাই।


আপনি ফিনিস () কল টু ব্যাক ব্যবহার করতে পারেন ..
হর্ষিদ

1
আপনি কি স্টার্টঅ্যাক্টিভিটিফারসাল্ট ডেভেলপার.অ্যান্ড্রয়েড
রেফারেন্স

@ হারশিদ আপনি কি আমাকে আরও বিশদ দিন দয়া করে, বা যদি আপনার লিঙ্কগুলি প্রশংসা করা হয়
ব্যবহারকারী ব্যবহারকারী

উত্তর:


253

কোনও ক্রিয়াকলাপ শুরু করতে যাতে কলিং ক্রিয়াকলাপের ফলাফল ফিরে আসে, আপনার নীচের মতো কিছু করা উচিত। আপনি যে ক্রিয়াকলাপটি শুরু করেছেন তার থেকে ফলাফল পেয়েছেন তা সনাক্ত করার জন্য আপনাকে নীচের মত অনুরোধকোডটি পাস করতে হবে।

startActivityForResult(new Intent(“YourFullyQualifiedClassName”),requestCode);

ক্রিয়াকলাপে আপনি setData()ফলাফল ফিরে আসতে ব্যবহার করতে পারেন।

Intent data = new Intent();
String text = "Result to be returned...."
//---set the data to pass back---
data.setData(Uri.parse(text));
setResult(RESULT_OK, data);
//---close the activity---
finish();

সুতরাং আবার প্রথম ক্রিয়াকলাপে আপনি নীচের কোডটি onActivityResult () এ লিখুন

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == request_Code) {
        if (resultCode == RESULT_OK) {
            String returnedResult = data.getData().toString();
            // OR
            // String returnedResult = data.getDataString();
        }
    }
}

আপনার মন্তব্যের উপর ভিত্তি করে সম্পাদনা করুন: আপনি যদি তিনটি স্ট্রিং ফিরে আসতে চান তবে উরি ব্যবহার না করে কী / মান জোড় ব্যবহার করে তা অনুসরণ করুন।

Intent data = new Intent();
data.putExtra("streetkey","streetname");
data.putExtra("citykey","cityname");
data.putExtra("homekey","homename");
setResult(RESULT_OK,data);
finish();

তাদের নীচে মতঅ্যাক্টিভিটি রেজাল্ট এ পান :

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == request_Code) {
        if (resultCode == RESULT_OK) {
            String street = data.getStringExtra("streetkey");
            String city = data.getStringExtra("citykey");
            String home = data.getStringExtra("homekey");
        }
    }
}

তুমি কি বলেছ? আমি আপনার শেষ মন্তব্যটি বুঝতে পারি না, দুঃখিত আমি ভাল ইংরেজী নই, আমি এখন আপনার কোডটি চেষ্টা করছি, আমি requestcodeকোন পূর্ণসংখ্যা কী রাখতে পারি?
ব্যবহারকারী

1
আমি বললাম, কোনও সমস্যা নেই (এনপি) এবং আপনি বলেছিলেন যে আপনি এটি বাস্তবায়নে দেরি করতে পারেন, আমি জবাব দিয়েছিলাম যে আপনার নিজের সময় নিন এবং তারপরে মন্তব্য করুন যাতে আমি অবহিত হতে পারি। রিকোয়েস্টকোডে আসছি, হ্যাঁ আপনি ইনটি রিকোয়েস্টকোডের মতো একটি পূর্ণসংখ্যা মান = 1 দিতে পারেন;
কাঁথ

হ্যাঁ এটি ঠিকঠাক কাজ করেছে, আমি আপনার উত্তরটি গ্রহণ করছি, আপনাকে অনেক ধন্যবাদ জানাই, আমি যদি আপনাকে কোনও উপায় জানাতে চাই তবে কেবল স্ট্রিং না প্রেরণ করুন, আমি "শহর", "রাস্তা", "এর মতো 3 টি স্ট্রিং প্রেরণ করতে চাই হোম ", স্ট্রিং লেবেল করার উপায় আছে?
ব্যবহারকারী

আপনার উত্তরটি খুব দুর্দান্ত, আপনি যদি চান, শিরোনাম সম্পাদনা করুন যাতে অনেক ব্যবহারকারী এটির জন্য অনুসন্ধান করতে পারেন
ব্যবহারকারী ব্যবহারকারী

আমি কীভাবে উদ্দেশ্যটি তৈরি করব তা সন্ধান new Intent(this, OtherActivity.class);করছিলাম : আমি কোনও ক্রিয়াকলাপে এই কোডটি ব্যবহার করতে পারি।
ব্যবহারকারী

3

যদি আপনি শেষ করতে চান এবং কেবল একটি resultCode(ডেটা ছাড়াই) যুক্ত করতে চান তবে আপনি setResult(int resultCode)আগে কল করতে পারেন finish()

উদাহরণ স্বরূপ:

...
if (everything_OK) {
    setResult(Activity.RESULT_OK); // OK! (use whatever code you want)
    finish();
}
else {
   setResult(Activity.RESULT_CANCELED); // some error ...
   finish();
}
...

তারপরে আপনার কলিং ক্রিয়াকলাপে, resultCodeআমরা ঠিক আছি কিনা তা পরীক্ষা করে দেখুন।

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == someCustomRequestCode) {
        if (resultCode == Activity.RESULT_OK) {
            // OK!
        }
        else if (resultCode = Activity.RESULT_CANCELED) {
            // something went wrong :-(
        }
    }
}

ক্রিয়াকলাপটি কল করতে ভুলবেন না startActivityForResult(intent, someCustomRequestCode)


4
এর মান Activity.RESULT_OKআসলে -1, যদি কেউ কাউকে বিভ্রান্ত করে। আমি শুধু ব্যবহার সুপারিশ করবে Activityধ্রুবক
jacoballenwood
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.