رفتن به مطلب
  • 0

بدست اوردن نام لایوت فعال


Ali BBH

سوال

با سلام

من یه برنامه دارم با یه اکتیویتی و 14 لایوت

و توی اکتیویتیم توی لایوت ها هی جابجا میشم حالا یه مشکل فقط وجود داره موقع ای که دکمه ی Back گوشی رو بزنی کامل برنامه رو میبنده

و الان اومدم جلوی دکمه ی Back رو میگیریم وبهش میخوام شرط بدم که اره اگه فلا لایوت باز بود بیا فولان لایوت را ببند و و لایوت مربوطشو باز کن

که الان مشکلم فقط اینه که نمیدونم چجوری تشخیص بدم در حال حاظر چه لایوتی فعال است:unknown:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

خب من یه روش غیر اصولی پیدا کردم ولی خب ساده تر از اونه  و تو برنامه های حجیم راحت میشه نام لایوت جاری رو بفهمی و دستورات مورد نظرتو بدی,  چون  تو روش قبلی باید هرجا لایوتی رو فراخوانی میکردی یه عددی رو اختصاص میدادی به یه متغیر و......که یکم مشکله تو برنامه های حجیم و پیچیده.

روش راحت تر اینه که اصلا مهم نیست چند تا لایوت داری و بگردی تو کد نویسیت ببینی کجا لایوتی رو فراخوانی کردی فقط کافیه یه لیبل تو هر لایوتت اضافه کنی tag اونرو برابر یه مقدار دلخواه بکنی مثلا (2121) وبیای تو text لیبل نام لایوتی که ساختی بزاری و Visible برابر False قرار بدی بعد به این شکل کد نویسی کنی و نام لایوت جاری رو متوجه بشی :

    

For Each v As View In Activity.GetAllViewsRecursive
      If v Is Label Then
          Dim lname1 As Label = v
        
        Try
        If lname1.Tag="2121" Then
            Select lname1.Text
                Case "listuser1"
                    ToastMessageShow( lname1.Text,True)
                
                Case "addIniLyout1"
                    ToastMessageShow( lname1.Text,True)
                    Case "addlyoutValue1"
                        ToastMessageShow( lname1.Text,True)
                        Case "AddPersentListLyout1"
                            ToastMessageShow( lname1.Text,True)            
            End Select
            
    
            End If
            
             Catch
            Log("Error")
            End Try
            
      End If
    Next

همه ی ویو هارو میگیری بعد اونایی که لیبل هستنو مشخص میکنی بعد اونی که تگش برابر تگی هست که انتخاب کردین انتخاب میکنی و متنشو میزاری تو select case و حالا میتونی بفهمی لاویت جاریت کدومه و بسته بهش  کدنویسی کنی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب میتونی ی متغیر از نوع اینتجر تعریف کنی و وقتی هر لایوت رو لود میکنی اون متغیر رو یه عدد بهش بدی مثلا برا لایوت اول 1 و وقتی رفتی دوم دو رو بدی

و توی ساب کی پرس هم با سلکت کیس و سلکت کردن اون متغیر میتونی بفهمی کدوم لایوتی 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 5 دقیقه قبل، محمد فرجی گفته است :

خب میتونی ی متغیر از نوع اینتجر تعریف کنی و وقتی هر لایوت رو لود میکنی اون متغیر رو یه عدد بهش بدی مثلا برا لایوت اول 1 و وقتی رفتی دوم دو رو بدی

و توی ساب کی پرس هم با سلکت کیس و سلکت کردن اون متغیر میتونی بفهمی کدوم لایوتی 

من قبلا از این راه استفاده میکردم ولی الان من 14 تا لایوت دارم و 38 بار به شیوه های مختلف هرکدوم از این لاویت هارو فراخوانی کردم و 3024 خط کد شده برنامه فعلا

و الان به حدی وسعت کار زیاد شده که خیلی خر تو خر شده و پیچیده شده و من بیام دوباره تک به تک کد هارو نگاه کنم و ببنیم کجا کدوم لایوتو فراخوانی کردم یه شماره بدم بهش و تو متغیرم ذخیره کنم یکم سخته به هر حال ممنون گفتم شاید راه راحت تری باشه برای این کار که مثل اینکه نیست:scratch_one-s_head:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...