بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ارسال دو مقدار متفاوت extras با نام متفاوت به یک اکتیویتی
با سلام
من قصد دارم از دو اکتیویتی متفاوت دو مقدار 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....
}
موفق باشید
ببینید سادس ! شما وقتی یک مقداری رو put میکنی به یک activity دیگه این مقدار چون از نوع bundle طبعتا نمیتونه null باشه چون در غیر این صورت کرش میکنه و NullPointerException به وجود میاد ! حال برای اینکه بتونیم این خطا رو هندل کنیم میایم و چک میکنیم اگر !=null بود .... . خیلی خودمونی تر بخوام بگم یعنی ما اینجوری در هر شرایطی چه مقداری put بشه جه نشه ما مقدار مورد نظرمون در activity مقصد رو initialize کردیم ! (9 سال پیش)
بله متوجه هستم کاملا حق باشماست
منظورم این خطه
Bundle extras = getIntent().getExtras().getString("first");
این خط حتی برای اکتیوتی sec هم که ما یم extras با نام sec میفرستیم هم جواب میده
درحالی که نام extras رو ما first گرفتیم
متوجه منظورم میشید؟
ازاکتیویتی first که بیایم کاملا همه چیز درسته ولی وقتی از sec بیایم چطور این خط با مقدار first واسش جواب میده در حالی که مقداری که ما فرستادیم sec هست (9 سال پیش)
متوجه نمیشم ، شما چرا نام کلید رو تغییر میدی ؟! خب معنی کلید اینه که هر وقت خواستی یه "موضوع واحد" و "جنس واحد" رو مقدارش رو بگیری . یعنی وقتی یک موضوع واحد رو میخوای چک کنی اون موضوع یک کلید خاص و مشخص داره ، یعنی کلید باید ثابت باشه و فقط Value تغییر کنه . پس در هر دو حالت وقتی putExtra میکنی ، پارامتر اول رو چیزی مثل "FROM" بذار و پارامتر دوم با توجه به اینکه در کدوم اکتیویتی هستی متغییر باشه ، مثلا برای اکتیویتی اول بذار "first" و برای اکتیویتی دوم بذار "sec" ، پارامتر اول هم که در هر دو حالت "FROM" هست . (9 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .