آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ارسال دو مقدار متفاوت extras با نام متفاوت به یک اکتیویتی

General  9 سال پیش  9 سال پیش
0 0

با سلام

من قصد دارم از دو اکتیویتی متفاوت  دو مقدار extras متفاوت رو به یک اکتیویتی بفرستم

فرضا من یک اکتیویتی به نام main دارم و دواکتیویتی با نامهای first و sec هم دارم

فرض کنید برای اکتیویتی first دارم:

 Intent intent=new Intent(G.context,main.class);
intent.putExtra("first","test");
startActivity(intent);

و برای اکتیویتی sec دارم:

 
 Intent intent=new Intent(G.context,main.class);
intent.putExtra("sec","sample");
startActivity(intent);

حالا چطوری باید چک بکنم که اگه فلان مقدار اومده به main فلان کار رو بکنه

من با این خط برنامم کرش کرد چون در هر صورت یکی از این مقادیر ارسال میشه ومقدار دیگه رو نمیشناسه وکرش میکنه


Bundle extras = getIntent().getExtras(); 
String userName;

if (extras.getString("first")) {
 Toast.....
}else{
Toast....
}
 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Soheil  9 سال پیش
0 0

 پاسخ صحیح
Bundle extras = getIntent().getExtras().getString("first"); 


if (extras != null) {
 Toast.....
}else{
Toast....
}

موفق باشید
 
0 0
خب مشکل همینه توی خطی که نوشتید فرض بگیرید من از اکتیویتی دیگه میام ومقدار ارسالی مقدار sec رو فرستادم اینجا باز برنامه کرش میکنه که ما اصلا مقداری به نام first نداریم (9 سال پیش)
0 0
اون خط !=null دقیقا مال همینه که گداشتم شما چک کنید من تست کردم درسته (9 سال پیش)
0 0
خب اخه هیچ وقت بدون extras این اکتیوتی اجرا نمیشه بلاخره یا از اکتویتی first میایم بهش که مقدار first رو میفرستیم ویا از اکتیوتی secمیایم که مقدار sec رو واسش میفرستیم با این حال بازم درست کارمیکنه به نظرتون؟؟! (9 سال پیش)
+1 0
بله. یادمه تو یکی از پروژه ها دقیقا میخواستم همینکارو بکنم و جواب گرفتم. تست کردنش وقت زیادی نمیگیره :) (9 سال پیش)
0 0
بله حق باشما بود خیلی ممنون ولی یه سوال چطور برنامه درست کار میکنه درحالی که اگه از اکتیوتی sec بریم نام extras ی که میفرستیم sec هست ولی بااین حال که ما اون رو با مقدار first گرفتیم بازم درست کارمیکنه؟ (9 سال پیش)
+1 0
ببینید سادس ! شما وقتی یک مقداری رو put میکنی به یک activity دیگه این مقدار چون از نوع bundle طبعتا نمیتونه null باشه چون در غیر این صورت کرش میکنه و NullPointerException به وجود میاد ! حال برای اینکه بتونیم این خطا رو هندل کنیم میایم و چک میکنیم اگر !=null بود .... . خیلی خودمونی تر بخوام بگم یعنی ما اینجوری در هر شرایطی چه مقداری put بشه جه نشه ما مقدار مورد نظرمون در activity مقصد رو initialize کردیم ! (9 سال پیش)
0 0
بله متوجه هستم کاملا حق باشماست منظورم این خطه Bundle extras = getIntent().getExtras().getString("first"); این خط حتی برای اکتیوتی sec هم که ما یم extras با نام sec میفرستیم هم جواب میده درحالی که نام extras رو ما first گرفتیم متوجه منظورم میشید؟ ازاکتیویتی first که بیایم کاملا همه چیز درسته ولی وقتی از sec بیایم چطور این خط با مقدار first واسش جواب میده در حالی که مقداری که ما فرستادیم sec هست (9 سال پیش)
+1 0
متوجه نمیشم ، شما چرا نام کلید رو تغییر میدی ؟! خب معنی کلید اینه که هر وقت خواستی یه "موضوع واحد" و "جنس واحد" رو مقدارش رو بگیری . یعنی وقتی یک موضوع واحد رو میخوای چک کنی اون موضوع یک کلید خاص و مشخص داره ، یعنی کلید باید ثابت باشه و فقط Value تغییر کنه . پس در هر دو حالت وقتی putExtra میکنی ، پارامتر اول رو چیزی مثل "FROM" بذار و پارامتر دوم با توجه به اینکه در کدوم اکتیویتی هستی متغییر باشه ، مثلا برای اکتیویتی اول بذار "first" و برای اکتیویتی دوم بذار "sec" ، پارامتر اول هم که در هر دو حالت "FROM" هست . (9 سال پیش)
0 0
چطوری با G.context به اکتیویتی بعد میره؟ من یه بار اینو نوشتم کرش کرد، به جاش بنویسید: G.currentActivity. (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .