String : نمایش متن توسط رشته ها

به نام خدا

در آموزش طراحی رابط کاربری کار با ویجت ها از جمله TextView و Button را یاد گرفتیم. به عنوان مثال برای تعریف متن یک دکمه از ویژگی text به صورت زیر استفاده می کردیم:

android:text="Start"

در یک اپلیکیشن ساده ممکن است تعریف متون به اینصورت، ساده ترین راه باشد اما برای یک اپلیکیشن که از چندین اکتیویتی تشکیل شده و یا محتوای زیادی را شامل می شود، مطمئنا دردسرساز خواهد شد. فرض می کنیم اپلیکیشن ما شامل ۵ اکتیویتی بوده که در انتهای هرکدام دکمه ای با متن “مراجعه به وب سایت ما” قرار داده شده. در حالت عادی شما باید در هر اکتیویتی که دکمه را تعریف کرده اید، متن را هم تعیین کنید. حالا تصمیم گرفته ایم “مراجعه به وب سایت ما” را به “بازدید از وب سایت” تغییر دهیم. تنها چاره این است که تغییرات را در هر ۵ اکتیویتی روی متن اعمال کنیم که زمان بیشتری از توسعه دهنده می گیرد و علاوه بر آن احتمال وقوع اشتباه را نیز افزایش می دهد. یا بخواهیم زبان اپلیکیشن را عوض کنیم. باید تمامی دکمه ها و متن ها و تکست فیلدها را یک به یک پیدا کرده و متون و کلمات فارسی را با زبان انگلیسی جایگزین کنیم. ضمن اینکه این تکرار متن بخصوص در متن های با تعداد کاراکتر بالا باعث شلوغی کد و در نتیجه سنگینی و افزایش حجم نیز خواهد شد. روش بهینه استفاده از رشته ها (String) می باشد. برای تمرین، پروژه ای که قبلا روی آن تمرین کرده بودیم را باز می کنیم.

رشته string

مشاهده می کنید در مسیر res/values فایلی با نام strings.xml تعبیه شده که مختص تعریف رشته ها می باشد.فایل را باز می کنیم :

<resources>
    <string name="app_name">MyApp Seven</string>
</resources>

داخل تگ resources یک رشته با نام app_name و محتوای MyApp Seven تعریف شده که مربوط به نام اپلیکیشن نمایش داده در Action Bar (نوار بالای صفحه) می باشد. فایل linear.xml مربوط به جلسات قبل را باز می کنیم. می خواهیم عبارت Welcome to android-studio.ir app که با رنگ قرمز نمایش داده شده را از طریق رشته ها فراخوانی کنیم. کد این TextView به این صورت بود :

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Welcome to android-studio.ir app"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:textSize="20sp"
    android:textColor="#d10000"/>

به سراغ فایل strings.xml می رویم. یک رشته جدید با نام دلخواه welcome_txt و محتوای
Welcome to android-studio.ir app اضافه کردیم :

<resources>
    <string name="app_name">MyApp Seven</string>
    <string name="welcome_txt">Welcome to android-studio.ir app</string>
</resources>

حالا نوبت به فراخوانی این رشته در مکان موردنظر است. مجدد به linear.xml رفته و ویژگی text مربوط به این TextView را به صورت زیر تغییر می دهیم :

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/welcome_txt"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:textSize="20sp"
    android:textColor="#d10000"/>

فراخوانی با /string@ شروع شده و در انتها نامی که برای رشته تعریف کرده بودیم اضافه می کنیم که نیاز به نوشتن این خط به صورت کامل نبوده و تنها با تایپ چند کاراکتر اول مانند str ، لیست پیشنهادی نمایش داده می شود :

رشته string

مشاهده می کنیم که در پیش نمایش عبارتی که به صورت رشته تعریف کرده بودیم نمایش داده می شود:

رشته string

از این رشته می توانیم در هر جای دیگر که مایل بودیم استفاده کنیم و هر زمان نیاز به تغییر این متن در کل اپلیکیشن خود داشتیم، تنها با تغییر محتوای رشته در فایل strings.xml به سادگی آن را اعمال کنیم.

دانلود فایل آموزشی با فرمت PDF
تعداد صفحات : ۴
حجم : ۶۰۰ کیلوبایت
قیمت : رایگان

سوالاتی که مشمول موارد زیر باشد تایید و پاسخ داده نخواهد شد :
۱ : جزء موارد پاسخ داده شده در مطلب "مشکلات و پرسش های رایج" باشد
۲ : سوال قبلا توسط افراد در دیدگاهها مطرح و پاسخ داده شده باشد
۳ : سوال خارج از مبحث آموزشی موجود در این صفحه باشد
  • جعفر گفت:

    سلام و خسته نباشید
    یک تکه کدی را از اینترنت دریافت کردم و میخوام به وسیله کد نویسی اندروید اون رو به بخشهای منظم تبدیل کنم و هر کدوم را در یک استرینگ ذخیره کنم به این صورت که با زدن یک دکمه برنامه یک ساختار کد html را دانلود کرده و در چند استرینگ ذخیره میکند.

    چرا ارز دیجیتالی اتریوم بهتر از بیت کوین است؟

    چرا ارز دیجیتالی اتریوم بهتر از بیت کوین است؟بیت کوین و اتریوم دو ارز دیجیتالی هستند که هر کدام ویژگی های منحصر به فردی دارند. وبسایت the next web در گزارشی به دلایل برتری اتریوم نسبت به بیت کوین … [ ادامه مطلب ]

    چطور از قلب خود محافظت کنیم؟

    چطور از قلب خود محافظت کنیم؟اگر عوامل خطر اصلی بیماری‌های قلبی، شامل دخانیات، رژیم غذایی ناسالم و کم‌تحرکی، کنترل شوند، حداقل از ۸۰ درصد مرگ‌های زودرس ناشی از بیماری‌های … [ ادامه مطلب ]

    ۷ گزینه غذایی پاییزی برای دیابتی‌ها

    ۷ گزینه غذایی پاییزی برای دیابتی‌هامنوی غذایی مبتلایان به دیابت با شروع فصل پاییز باید تغییر کند چون بسیاری از گروه‌های غذایی پاییزی خاصیت کاهش قند خون را برای … [ ادامه مطلب ]

    ****************************************
    مثلا میتونم از قسمت

    تا
    ” />
    را بگیرم ولی فقط یکی
    راهنماییم کنید تا بتونم با کد نویسی در سه استرینگ ذخیره کنم؟؟

  • مهسا۱۲۳ گفت:

    سلام من میخواستم یه کتاب بسازم که ۶۰قسمت داره یعنی باید برا هر قسمت باید یه کلاس بسازم؟شنیدم با رشته ها میشه سریع تر ساخت.
    خواهش میکنم کمکم کنید؟

    1. Admin گفت:

      اگه منظورتون ۶۰ صفحه هست، خیر نیازی نیست برای هر صفحه یه کلاس ساخته بشه. سرچ کنید آموزش ساخت کتاب اندروید مطلب فارسی زیاده. عموما از دیتابیس استفاده میشه

  • سجاد پروانه گفت:

    خیلی آموزش ها عالین . مرسی

  • ممنونم بابت مطالب مفیدی که قرار میدید!

  • کاظم گفت:

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

  • Mahdi0047 گفت:

    با سلام و تشکر از سایت خوبتون
    من تازه کار با اندروید استدیو رو شروع کردم، یه سوال دارم و اون اینه که میشه از طریق کد جاوا در منابع(ریسورس ها مثل strings یا colors) تغییرات ایجاد کرد؟
    اگر میشه ولی توضیحش طولانیه فقط بگید میشه تا بیشتر پیگیر شم.

    1. Admin گفت:

      سلام
      بله. سرچ بفرمایید به نتیجه میرسید

  • میلاد گفت:

    سلام مهندس
    می خواستم بدونم میشه از طریق اندروید استدیو یک متن رو از داخل برنامه حذف کرد یا تغییر داد؟
    اگه میشه یه راهنمایی بکنید ممنون میشم

    1. Admin گفت:

      اگه منظورتون از داخل برنامه که سورسش رو در اختیار ندارید هست، خیر

  • سیدحسین گفت:

    خیلی طول کشید آموزش بعدی تون؟!

    1. Admin گفت:

      سلام. تاریخ دقیقی نمیتونم مشخص کنم ولی تایمای خالیمو میذارم رو آماده کردن آموزشای جدید
      آموزش جدید رو از دیروز استارت زدم

  • abolfazl گفت:

    سلام آموزش بعدی تقریبا چند وقته دیگه آماده میشه؟

    1. Admin گفت:

      سلام. تاریخ دقیقی نمیتونم مشخص کنم ولی تایمای خالیمو میذارم رو آماده کردن آموزشای جدید
      آموزش جدید رو از دیروز استارت زدم

  • abolfazl گفت:

    ی سوال اندروید استودیو امکانات بیشتری داره یا اکلیپس یعنی می خوام بگم افراد حرفه از اندروید استودیو استفاده می کنن یا اکلیپس؟

    1. Admin گفت:

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

  • Mahdi گفت:

    با سلام
    آیا میشه از طریق کد جاوا در string res تغییری ایجاد کرد؟
    یعنی به طور مثال متن رو تغییر داد؟

    1. Admin گفت:

      بله. آموزش بعدی یکی از مواردش تغییر string از طریق جاوا هست. میتونید سرچ هم بکنید حتما به نتیجه می رسید

  • علیرضا صابری گفت:

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

    1. Admin گفت:

      سلام
      محیط تفاوتی نمیکنه. هر کاری که تو ایکلیپس بتونید انجام بدید اینجا هم میشه.
      بنده تو حوزه ساخت گیم وارد نشدم هنوز

  • parsa گفت:

    روزی نیست که نیام اینجا تا چک کنم ببینم اموزش جدید گذاشتید یا نه D:

    1. Admin گفت:

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

  • takpar95 گفت:

    سلام به نظر شما برای یه فرد مبتدی اندروید استودیو بهتره یا اکلیپس؟؟؟؟

    1. Admin گفت:

      اندروید استودیو

  • سی پلاس گفت:

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

  • zahra گفت:

    سلام.دوست عزیز ممنون از آموزش های مفیدتون.
    میشه بگین اموزشای جدید چند روز دیگه گذاشته میشه؟
    من از سبک اموزش شما خوشم میاد ولی لطفا تکلیف مارو مشخص کنید که اگه آموزشا قراره مث قبل با تاخیر زیاد گذاشته بشه مجبوریم یه منبع آموزشی جدید پیدا کنیم.

    1. Admin گفت:

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

  • علی گفت:

    سلام
    من تازه با اندروید استودیو آشنا شدم و میخواستم بخاطر این آموزش های خوبتون تشکر کنم .
    درضمن و درصورت امکان سورس هر بخش رو هم برای دانلود قرار‌بدین تا بتونیم بهتر تمرین کنیم

    موفق باشید

  • پارسا گفت:

    سلام, ممنون بابت اموزش های خوب و پرکاربردتون، ادامه اموزش ها رو کی میزارید؟

    1. Admin گفت:

      در اولین فرصت آموزشهای بعدی اضافه میشه و ان شا الله با سرعت بیشتر از قبل

  • Farbowwwd گفت:

    سلام خیلی ممنون از مصالب عالیتون
    خیلی از دوستان مانند خودم با اینکه اموزش های شما عالی هست اما به مشکل ها و ارور هایی برخورد می کنیم که حله انها سخت است … به نظره من یک گروه تلگرام بزنیم و به هم کمک کنیم .. اگه موافقین یک گروه بزنیم تو تلگرام … … id man : @farbowwwd

    1. Admin گفت:

      ممنون از پیشتهادتون. مطلبی با عنوان “سوالات متداول” هست که مشکلات اساسی رو توضیح میدیم. گروه هم فعلا فرصتشو ندارم متاسفانه

  • علی پوراسماعیلی گفت:

    سلام. روی ویندوز ۷ گوشی رو که وصل میکردم به سیستم موقع اجرای برنامه تو لیست ابزارهای برنامه میومد و میشد برنامه رو روی گوشی تست کرد. الان ویندوز ۸ رو نصب کردم گوشی رو نمیاره. چجوری میتونم این کارو باز انجام بدم؟

    1. Admin گفت:

      ویندوز ۷ و ۸ در این خصوص تفاوتی ندارن. ببینید اشکال از کجاس. چیزی به ذهنم نمیرسه

  • دهقاني گفت:

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

    1. Admin گفت:

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

  • علی گفت:

    سلام آموزش بعدی کی اماده میشه

    1. Admin گفت:

      سلام
      به زودی

  • سارا گفت:

    سلام.
    ممنون از اطلاعات مفیدی که در اختیارمون میزارید.
    لطفا نحوه ی استفاده از سرویس ها با خروجی json رو توضیح بدید. میدونم که این مطلب شاید برای خیلی ها جالب نباشه و مطرح کردنش در اینجا مناسب نباشه. ولی اگه آموزشی کامل و با زبان ساده از این مبحث داشته باشید مایلم هزینه اش رو بپردازم و برام ایمیلش کنید.
    با تشکر

  • جواد گفت:

    آقای مهندس مطهری من یه سوال دیگه هم دارم اونم اینکه من فایل Galaxy رو تو فایل ova گذاشتم اما Genymotion نشناخت و مجبور شدم دانلود کنم تا بشناسه با این وجود بعد دانلود به مشکل بالا که قبلا اشاره کردم برخورد کردم؟
    از آموزش های مفیدتون بسیار ممنونم

    1. Admin گفت:

      متوجه نشدم سوالتون چیه

      1. جواد گفت:

        منظورم این بود که فایل Galas4 رو که تو سایتون گذاشتید گفتین تو پوشه ova دستی کپی کنید Genymotion میشناسه اما من با اینکه کپی کردم نمیشناسه فکر کنم یه فایل های جانبی میخواد که تو پوشه deployed هستن و تا اونو نباشن محیط رو به Genymotion اضافه نمیکنه

        1. Admin گفت:

          نه فایل جانبی نداره
          ضمنا هر سوال رو تو مطلب مربوط به خودش بپرسید

  • جواد گفت:

    آقای مهندس مطهری من تو Genymotion نمی تونم شبیه ساز رو اجرا کنم و خطا میده با اینکه یکبار فایل Galexy رو از رو سایت برداشتم و دفعه بعد از خود برنامه با این وجود خطا میده؟!
    unable to start the virtual device.
    VirtualBox can not start the virtual device
    To find out the cause of the problem,start the virtual device from VirtualBox
    بعدشم به سایت برنامه Reference میده که اونجا هم چیزی پیدا نکردم.
    ممنون میشم بگید چیکار کنم

    1. Admin گفت:

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

      1. جواد گفت:

        Oracle VM VirtualBox رو که باز می کنم خودش اتوماتیک Galaxy s4 رو میشناسه اما run مکه میکنم پیغام:
        موفق به بازکردن جلسه برای ماشین مجازی Samsung Galaxy S4 – 4.4.4 – API 19 – 1080×1920 شبیه سازی نشد.
        VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED).

        کد نتیجه: E_FAIL (0x80004005)
        جزء: ConsoleWrap
        رابط: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}
        رو میده؟!

        1. Admin گفت:

          VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED)
          اینو سرچ کنید به جواب میرسید. vt-x باید فعال باشه

  • باران گفت:

    اون آموزش اصلیه کی میاد

    1. Admin گفت:

      یکی دو آموزش تکمیلی دیگه از طراحی رابط کاربری منتشر بشه بعدش ان شا الله فصل بعدی

      1. باران گفت:

        چی شد مهندس

        1. Admin گفت:

          در تلاشم. منتها با سرعت کم

          1. علی گفت:

            تموم نشد؟؟؟
            🙂

          2. Admin گفت:

            اگه مشکلی پیش نیاد فکر میکنم بخش اول فصل جدید تا ۴ روز آینده آماده بشه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی *