studio - Android: كيفية جعل نتائج إرجاع النشاط إلى النشاط الذي يطلق عليه؟




setting activity (2)

لدي نشاط Location الذي يمكن استدعاؤه من العديد من الأنشطة ، مثل Sign up Order . في نشاط Location يقوم المستخدم بإدخال موقعه ، لذلك يقوم Location النشاط بإرجاع هذا الموقع الجديد إلى هذا النشاط الذي يطلق عليه.

لذلك عندما يستدعي نشاط Sign up نشاط Location ، يجب عليه إعادة البيانات إلى نشاط التسجيل. في المرة الأخرى سيؤدي نشاط Order نفس الشيء.

ملحوظة

أعلم أنك ستخبرني أنه يجب علي نشر الرمز ، لكنني لا أطلب منك أن تعطيني الكود. أنا فقط أريد بعض النصائح أو الروابط أو المواضيع الجيدة.


إذا كنت ترغب في إنهاء وإضافة رمز resultCode (بدون بيانات) ، يمكنك استدعاء setResult(int resultCode) قبل finish() .

فمثلا:

...
if (everything_OK) {
    setResult(1); // OK!
    finish();
}
else {
   setResult(-1); // some error ...
   finish();
}
...

ثم في نشاط الاتصال ، تحقق من resultCode ، لمعرفة ما إذا كنا على ما يرام.

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

لا تنس استدعاء النشاط باستخدام startActivityForResult(intent, someCustomRequestCode) .


لبدء النشاط الذي يجب أن يعيد نتيجة لنشاط الاتصال ، يجب عليك القيام بشيء مثل أدناه. يجب عليك تمرير رمز الطلب كما هو موضح أدناه من أجل تحديد أنك حصلت على النتيجة من النشاط الذي بدأته.

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();
        }
    }
}

EDIT استنادًا إلى تعليقك: إذا كنت تريد إرجاع ثلاث سلاسل ، فيمكنك اتباع هذا عن طريق استخدام أزواج المفاتيح / القيم بقصد بدلاً من استخدام Uri.

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

احصل عليها في onActivityResult مثل أدناه:

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");
        }
    }
}






onactivityresult