انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حل مشکل فورس کلوز در انتقال از اکتیویتی به اکتیویتیه دیگر !

حل مشکل فورس کلوز در انتقال از اکتیویتی به اکتیویتیه دیگر !

#1
خیلی از دوستان تازه وارد این مشکل رو دارن ک بعد رفتن از اکتیویتی به اکتیویتی با مشکل فورس کلوز روبه رو میشن!
من چندتا از دلایل شایع رو ک به ذهنم میرسه رو توضیح میدم اگر از دوستان کسی دلایل دیگه ( و حلش) مواجه شده بنویسه تا تاپیک آپدیت بشه!

+اصلی ترین و شایع ترین دلیل که اکثرا باهاش مواجه میشن فراموش کردن معرفی اکتیویتیه جدید درmanifest !
- به این صورت:

کد پی‌اچ‌پی:
اینطوری مینویسیم:
بعد از تگ </activity>
و قبل از تگ</application>

<
activity android:name=".ActivityNew"></activity
+یه مشکل دیگه در همین مورد اینه که نقطه(.) قبل از اسم اکتیویتی فراموش میشه(در حالت دیگه میشه اسم پکیج رو بجای نقطه نوشت مثلا:ir.android.ActivityNew

+از مشکلات دیگه این هستش ک خود اکتیویتی جدید مشکل داره و طبیعتا فورس کلوز میده و مشکل از انتقال نیست!
-برای متوجه شدن میتونین از دیباگ کردن مشکل رو فهمیده و رفع کنید.برای ساده شدن کار ابتدا اکتیویتی جدید رو ساده کنید مثلا به یک پیام toast اکتفا کنید تا ببینید مشکل از خوداکتیویتیه یا نه!

+در همین مورد،خیلی وقت ها مشکل از layout میباشد و ممکنه عناصر درست تعریف نشده باشن با مشکلی در چیدمان باشد.بهتر است خوت لی اوت رو جداگانه بررسی کنید.

+از مشکلات دیگه میتوان به تعریف کد باتن در اکتیویتی اول برای انتقال به اکتیویتی دوم اشاره کرد

کد پی‌اچ‌پی:
Button bt = (Button)findViewById(R.id.button1);
         
bt.setOnClickListener(new OnClickListener() {
         
    @Override
             
public void onClick(View v) {
         
       startActivity(new Intent(MainActivity.this,ActivityNew.class));
         
    }
        }); 

+یکی از دلایل عمده هم وقتی باعث مشکل میشه که برنامه نویس در اکتیویتی اول مقادیری رو برای اکتیویتی دوم با intent ارسال میکنه اما در اکتیویتی دوم بنا به دلایلی درست دریافت نمیشود و چون از دستور شرطی برای حالتی که مقادیر درست دریافت نشوند(در اکتیویتی دوم)استفاده نشده باعث فورس کلوز میشود
- دریافت مقادیر در اکتیویتی دوم به این صورت

کد پی‌اچ‌پی:
Bundle extras getIntent().getExtras();
if (
extras != null) {
 
   if(extras.containsKey("name")){
 
       String myVariable_2 extras.getString("name");
 
   }

پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان