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

دسترسی به Activity قبلی

امید  10 سال پیش  10 سال پیش
0 0

سلام دوستان

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

Edit

فرض کنید برنامتون 3 تا activity داره

اکتیویتی اول mainActivityOne

اکتیویتی دوم mainActivityTwo

اکتیویتی سوم secendActivity

حالا برنامه رو باز میکنی و از activityMainTwo وارد secendActivity میشی.

توی secendActivity از کجا میشه فهمید که از اکتیویتی اول(activityMainOne) اومده یا از اکتیویتی دوم(activityMainTwo)

0 0
کسی نیست راهنمایی کنه ؟ (10 سال پیش)
0 0
منظورت کدوم Activity هستش. (10 سال پیش)
0 0
(10 سال پیش)
0 0
داخل هر سه اکتیویتی متد onPause رو Override کن و داخلش بنویس : G.lastActivity = this ، که البته lastActivity یه فیلد استاتیک هست در کلاس G که از Application ارث بری میکنه . ( میتونی اینو در متد onPause و در کلاس EnhancedActivity بنویسی و تمام Activity ها از اون ارث ببرن ) (10 سال پیش)
0 0
حالا دیگه متغییر G.lastActivity همیشه آخرین اکتیویتی رو درون خودش داره . (10 سال پیش)
0 0
ممنون از جوابت. این فیلد اساتیک که گفتید از چه کلاسی ساخته میشه ؟ (10 سال پیش)
0 0
ممنون از جوابت. این فیلد اساتیک که گفتید از چه کلاسی ساخته میشه ؟ از کلاس Activity ? (10 سال پیش)
0 0
بدون فیلد استاتیک هم میشه همچین کاری کرد ؟ (10 سال پیش)
0 0
منظورتون چیه ؟ فیلد ، یک متغییر هست که اگه استاتیک تعریف بشه فقط وابسته به کلاسه و در تمام اشیاء تعریف شده از اون کلاس یه مقدار داره . بهترین روش همینه که گفتم . (10 سال پیش)
0 0
خوب بعد چطور از اون کلاسی که توی lastActivity دخیره شده یک مقدار رو بخونم؟ مثلا یک integer (10 سال پیش)
0 0
البته میتونی در متد onPause اینو بنویسی : G.lastActivity = getClass().getSimpleName(); الان lastActivity یه متغییر از نوع String هست که نام کلاس اخیر توش ذخیره شده . (10 سال پیش)
0 0
با if چک کن که G.lastActivity داخلش چیه و متناسب با اون دستور مورد نظر رو بده . (10 سال پیش)
0 0
ممنون Reza. فعلا با متد استاتیک نوشتم تا ببینم چی میشه ولی فکر کنم جلوتر به مشکل بخورم. قبلا یه جایی یه همچین موردی رو دیده بودم که یک متد از api اندروید استفاده کرده بود. بیشتر دنبال اون بودم. چون هم ساده تره و هم تمیزتر. اگر کسی اون متد رو سراغ داره اطلاع رسانی کنه. ممنون (10 سال پیش)
0 0
یه سوال دیگه هم داشتم. فرض کنید توی یک اکتیویتی چند تا کلید دارید و با کلیک رو یکیشون به اکتیویتی بعدی میرید. از کجا میشه فهمید با کلید روی کدوم کلید به اون اکتیویتی رفتید؟ (10 سال پیش)
+1 0
کافیه همراه Intent یک مقدار رو Intent.putExtra کنید یک کلید تعریف کنید و مقدار دلخواه وارد کنید ، بعدا این کلید رو در اکتیوتی دریافت کنید < با توجه به کلید و مقدار دریافت شده میتونید نتیجه و تصمیم بگیرید (10 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
امید  10 سال پیش
0 0

خب سوالم رو جور دیگه ای مطرح میکنم

فرض کنید الان توی Secend Activity هستید.

ازکجا میشه فهمید که از کدوم اکتیویتی به Secend Activity رفتید ؟

پاسخ به سوال 
SaLaH KuRD  10 سال پیش
+3 0

موقعی که intent رو تعریف میکنید برای رفتن به اکتیویتی بعدی، خیلی راحت میتونید از putExtra استفاده کنید در اکتیویتی اول :

Intent i = newIntent(FirstScreen.this, SecondScreen.class);
String strName = "این متن از اکتیویتی اول ارسال می شود";
i.putExtra("STRING_I_NEED", strName);

و توی اکتیویتی دوم توسط کد زیر متنی رو که از اکتیوتی اول گرفتید میگیرید و میتونید نشون بدید :

Bundle extras = getIntent().getExtras();
if(extras != null){
newString = extras.getString("STRING_I_NEED");
}

و newString داده ای هستش که شما از اکتیویتی اول گرفتید و بر اساس نیازتون میتونید ازش استفاده کنید.

---------- ویرایش شد ----------

برای ارسال داده در بین Fragment ها می تونید از روش زیر استفاده کنید :

Bundle bundle =newBundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

و در اکتیویتی دوم داده فرستاده شده رو میگیرید :

Bundle bundle = this.getArguments();
if(bundle !=null){
int i = bundle.getInt(key, defaulValue);
}
پاسخ به سوال 
امید  10 سال پیش
0 0

ممنون سالار

ولی من توی کلاسی هستم که از کلاس فرگمنت extends شده و با این کد به این کلاس اومدم:

 getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, CameraFragment.newInstance(), CameraFragment.TAG).commit();

و کد شمارو توی کلاسی که از فرگمنت extends شده نمیشناسه :(

راه حل دیگه ای ندارید ؟

0 0
یک کلاس با یک متغییر استاتیک بساز ... مقدار بهش بده (10 سال پیش)
0 0
فعلا با فیلد استاتیک کارم رو راه انداختم ولی دنبال راه اصولیش هستم. (10 سال پیش)
0 0
راهی که SaLaH KuRD گفت خوب ولی برای من جواب نمیده. راه دیگه ای نیست ؟ (10 سال پیش)
+1 0
جواب بالا رو ویرایش کردم مجددا بررسی کنید . (10 سال پیش)
0 0
قسمت اول کد حل و باید به putInt یه مقدار بدیم که جای دیگه ازش استفاده کنیم. ولی قسمت دوم رو خوب متوجه نشدم. توی getInt مگه نباید همون مقداری که توی putInt وارد کردیم رو بگیریم؟ پس چرا باید بهش مقدار بدیم ؟ (10 سال پیش)
0 0
بهش مقدار ندادیم ، اون کلیده ( اسم یا نشونیه ) ، یعنی مشخص میکنی که کدوم متغییر ذخیره شده رو میخوای بگیری . چون شما میتونی چندین مقدار رو در intent ذخیره کنی ، پس برای بازیابی هم باید اسمشون رو بگی . (10 سال پیش)
0 0
پس کجا باید بهش مقدار بدیم که از جای دیگه ای بخونیمش ؟ (10 سال پیش)
0 0
در putInt مقدار میدی : ==========> bundle.putInt(key, value); مقدار در value ذخیره میشه و کلید فراخوانیش key هست یا : i.putExtra("STRING_I_NEED", strName); که strName مقدار ذخیره شده است و "STRING_I_NEED" کلید فراخوانیشه . (10 سال پیش)

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