PDA

View Full Version : ارسال اطلاعات از اکتیویتی



ilalia2
دوشنبه 22 شهریور 1395, 17:04 عصر
سلام خدمت مهندسین

من میخوام وقتی از یک اکتیویتی به اکتیویتی اصلی(Main) برگشتم، مثلا یک پیغام Toast از اکتیویت Main نمایش داده بشه!
تو اکتیویتی دوم یک باتن ایجاد کردم که با کلیک روی اون کدهای زیر اجرا بشه:

;()Intent message=new Intent
;(setResult(RESULT_OK, message
;()finish

و در اکتیویتی اول (Main) هم کد زیر رو نوشتم:



}(protected void onActivityResult(int requestCode, int resultCode, Intent data
;(super.onActivityResult(requestCode, resultCode, data

}(if (resultCode == RESULT_OK
;()Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT).show
}

ولی اجرا نمیشه! مشکل از کجاست؟؟

ilalia2
جمعه 26 شهریور 1395, 23:15 عصر
لطفا کمک کنید، بنظرتون بجای استارت اکتیویتی ، بذارم استارت اکتیویتی فور ریزالت درست میشه؟
اگه راهش اینه بگید داخل پرانتزش چی باید بذارم؟

ilalia2
شنبه 03 مهر 1395, 17:52 عصر
................

msroid
یک شنبه 04 مهر 1395, 19:11 عصر
سلام

آیا توی اکتیویتی اول اینتنت اکتیویتی دوم رو با startActivityForResult صدا زدین...؟؟

godofphp
یک شنبه 04 مهر 1395, 22:52 عصر
خب شما بهتر نیست خطایی که رخ میده رو هم بنویسید یا یه عکس از محیط بگیرید بزارید اینجا ؟ در ضمن برای تبادل اطلاعات بین اکتیویتی ها بهتره از متد putExtra بر روی اینتنت استفاده کنید و مقدار رو بصورت کلید و مقدار بفرستید و هر جا خواستید دریافت کنید

ilalia2
یک شنبه 04 مهر 1395, 23:07 عصر
سلام

آیا توی اکتیویتی اول اینتنت اکتیویتی دوم رو با startActivityForResult صدا زدین...؟؟

از هر دو روش
startActivityForResult و startActivity استفاده کردم ولی جواب نداد.

ilalia2
یک شنبه 04 مهر 1395, 23:12 عصر
خب شما بهتر نیست خطایی که رخ میده رو هم بنویسید یا یه عکس از محیط بگیرید بزارید اینجا ؟ در ضمن برای تبادل اطلاعات بین اکتیویتی ها بهتره از متد putExtra بر روی اینتنت استفاده کنید و مقدار رو بصورت کلید و مقدار بفرستید و هر جا خواستید دریافت کنید

از
putExtra استفاده میکنم و موقع ارسال اطلاعات به اکتیویتی بعدی جواب میده، منتها مشکل من اینه که در هنگام برگشت به اکتیویتیه قبلی(main) میخوام یه پیغامی بصورت Toast نمایش بده.

همونطور که بالا توضیح دادم از
onActivityResult استفاده کردم، هیچ اروری هم نمیده ولی وقتی به Main برمیگردم دستور مورد نظر اجرا نمیشه.

msroid
دوشنبه 05 مهر 1395, 07:36 صبح
اینجوری بنویسید ببینید نتیجه میگیرید:
در اکتیویتی اول:

Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(i, 110);


در اکتیویتی دوم اگر میخوای داده برگردونی:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();


یا اگر نمیخوای داده برگردونی:

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();


بعد در اکتیویتی اول:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {


if (requestCode == 110) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}

godofphp
دوشنبه 05 مهر 1395, 07:46 صبح
}(if

(resultCode ==

RESULT_OK


;()Toast.
makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT).show
}
برای این if یه دونه else هم بزار و یه رشته ی دیگه رو toast بکن مثلا اینطوری :




(if (resultCode == RESULT_OK)
{
Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(), "Not Ok", Toast.LENGTH_SHORT).show();
}





اگه متن not ok نمایش داده بشه مشکل تو میتونه از صد تا جای دیگه باشه اولین کار اینه بری توی مانیفست و پرمیشن ها و ... رو چک کنی بعدش هم از لاگت کمک بگیری تا ببینی از کجا مشکلت پیش اومده

ilalia2
دوشنبه 05 مهر 1395, 16:31 عصر
ممنون از دوستان، حل شد

ilalia2
دوشنبه 05 مهر 1395, 16:32 عصر
بعد در اکتیویتی اول:


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {





if (requestCode == 110) {

if(resultCode == RESULT_OK){

String result=data.getStringExtra("result");

}

if (resultCode == RESULT_CANCELED) {

//Write your code if there's no result

}

}



من قبلا از یک if برای result_code استفاده میکردم، ولی با این روش شما جواب داد، خیلی ممنون

ilalia2
دوشنبه 05 مهر 1395, 16:35 عصر
}(if

(resultCode ==

RESULT_OK


;()Toast.
makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT).show
}
برای این if یه دونه else هم بزار و یه رشته ی دیگه رو toast بکن مثلا اینطوری :




(if (resultCode == RESULT_OK)
{
Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(), "Not Ok", Toast.LENGTH_SHORT).show();
}





اگه متن not ok نمایش داده بشه مشکل تو میتونه از صد تا جای دیگه باشه اولین کار اینه بری توی مانیفست و پرمیشن ها و ... رو چک کنی بعدش هم از لاگت کمک بگیری تا ببینی از کجا مشکلت پیش اومده

خیلی ممنون از کمکتون، ولی قبلا از else استفاده کرده بودم ولی جواب نمیداد