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

xml های متفاوت برای screen های متفاوت

PandaStudio  12 سال پیش  12 سال پیش
+6 0

سلام دوستان

همونطور که می دونید برای اینکه ظاهر سایت توی حالت portrait و landscape متفاوت باشه کافیه UI خود را برای هر دو حالت با یک نام یکسان طراحی کنید و حالت landscape را توی پوشه layout-land کوپی کنید.

حالا من یه مشکلی دارم اینکه وقتی اسکرین را می چرخونم ظاهر تغییر میکنه اما  توی activity مرتبط با اون UI عناصر (مثل دکمه و تکست و... ) تعریف نمیشه و nullPointerExeption میگیره  به نظرتون چکار کنم؟

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

0 0
باید در هر دو فایل id های ویو هات یکسان باشه ها و در هر دو id داشته باشن این مورد رو چک کن. (12 سال پیش)
0 0
آخه من توی uiحالتlandscapeعناصر متفاوتی با حالت portaitدارم برای همین نمی تونم از idهای یکسان استفاده کنم (12 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
CreativeBoy  12 سال پیش
+2 0

جواب قسمت اول رو نمیدونم :| 

ولی در جواب اون جمله آخرتون باید بگم که وقتی گوشی رو میچرخونید ( مثلا از portrait به landscape) میرید اکتیویتی جاری کاملا از بین میره و دوباره ساخته میشه.  یعنی وقتی گوشیتون رو میچرخونید مراحل زیر به ترتیب روی اکتیویتی انجام میشه.

  1. pause
  2. stop
  3. destroy 

و اکتیویتی از اول ساخته میشه و شروع به کار میکنه.

برای تست کردن این رخداد ها، میتونید متد های مربوط به هر حالت رو توی اکتیویتی قرار بدید و نتیجه رو تو مثلا تو  Logcat ببینید.

0 0
ممنون میدونید چطور میشه از لود دوباره activity جلوگیری کرد؟ شاید اینطوری بشه یکاریش کرد. (12 سال پیش)
+1 0
خواهش، من هنوز آموزش ها رو کامل نخوندم (تازه فصل 5 هستم :) ) ولی اگه جوابی پیدا کردم حتما اینجا میذارم، خودمم خیلی دوست دارم بدونم چطور میشه از ریلود شدن اکتیویتی جلوگیری کرد، چون تو چند تا برنامه دیگه دیده بودم که این مشکل رو داشتن. (12 سال پیش)
پاسخ به سوال 
ajn91  12 سال پیش
+1 0

با توجه با نظر بالات به  نظر من  حالت صفحه رو بگیر و در هر  حالت  یک سری عناصری که مدنظرت هستو تعریف کن و مقدار دهی کن مثلا  در حالت  portrait  یک  TextView داری که در حالت  landscape نداری با یک  if  تشخیص میدی حالتو و اگه  landscape  بود دیگه لازم نیست اون TextView رو تعریف و  مقدار دهی کنی  و یا اینکه id متفاوتی داره

0 0
بله از طریق همین روش حلش کردم ابتدا با if بررسی کردم حالت افقی هست یا عمودی سپس توی اون حالت عنصر موردنظر را تعریف کردم (12 سال پیش)

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