آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

باز کردن یک اکتیویتی و برگرداندن دیتا از آن

پنجشنبه, ۷ اسفند ۱۳۹۹، ۰۱:۵۰ ق.ظ

اگر از اکتیویتی مبدا به اکتیویتی مقصد برویم و نیاز باشد از اکتیویتی مقصد اطلاعاتی به اکتیویتی مبدا آورده شود از startActivityForResult برای رفتن به اکتیویتی مقصد استفاده می کنیم.

توی اکتیویتی مقصد یک Intent جدید تعریف میکنیم و دیتاها رو بهش متصل می کنیم و قبل از finish کردن setResult را قرار می دهیم.

Intent intent = new Intent();
intent.putExtra(Constant.KEY_TITLE, title);
intent.putExtra(Constant.KEY_DESCRIPTION, description);
intent.putExtra(Constant.KEY_PRIORITY, priority);
setResult(RESULT_OK, intent);
finish();

 

فرض کنیم برای رسیدن به اکتیویتی مبدا دو راه وجود داشته باشد. یکی زدن روی دکمه بک گوشی و دیگری کلیک کردن روی یک دکمه فرضی در برنامه. از کجا بفهمیم از طریق کلیک روی دکمه فرضی به اکتیویتی مبدا رسیدیم؟

وقتی در اکتیویتی مبدا startActivityForResult می نویسیم یک کدی برای درخواستمون تعیین می کنیم که یکی بودن اون کد رو توی onActivityResult بررسی می کنیم.

باز کردن اکتیویتی جدید:

Intent intent = new Intent(MainActivity.this, NoteActivity.class);
startActivityForResult(intent, EDIT_NOTE_REQUEST_CODE);

 

بررسی ریزالت در اکتیویتی مبدا (دو درخواست مختلف با دو کد مفاوت انجام شده است):

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == NEW_NOTE_REQUEST_CODE && resultCode == RESULT_OK) {
        Note note = new Note(
                data.getStringExtra(Constant.KEY_TITLE),
                data.getStringExtra(Constant.KEY_DESCRIPTION),
                data.getIntExtra(Constant.KEY_PRIORITY, 1)
        );

        ...

    } else if (requestCode == EDIT_NOTE_REQUEST_CODE && resultCode == RESULT_OK) {
      ...

    } else {
        Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
    }
}
موافقین ۰ مخالفین ۰ ۹۹/۱۲/۰۷
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی