نمایش یک متن، در یک TextView ، در برنامه نویسی اندروید
برای نمایش یک متن ، در یک TextView ، به دو روش می توان عمل کرد که آنها را در ادامه شرح می دهیم.
روش اول : تعیین متن مورد نظر برای نمایش در TextView ، در فایل xml
برای تعیین متن مورد نظر برای نمایش در TextView ، باید درون فایل xml ای که در آن، TextView تعریف شده است، کد زیر را به کدهای تعریف TextView اضافه کنیم :
در این روش، می توانیم متن فارسی مورد نظرمان را به طور مستقیم، درون فایل xml بنویسیم.
معمولا توصیه می شود که متن های مورد نظرمان را به صورت رشته (string) در فایل strings.xml تعریف کنیم و سپس آن را به صورت یک رشته (string) از فایل strings.xml فراخوانی کنیم. مثلا فرض کنید که متن را به صورت یک رشته (string) و با نام myString ، در فایل strings.xml تعریف کرده ایم، اکنون برای اینکه در فایل xml و در میان کدهای مربوط به تعریف عنصر TextView ، به متن مورد نظر، ارجاع بدهیم، کدهای زیر را می نویسیم :
روش دوم : تعیین متن مورد نظر برای نمایش در TextView ، با کدنویسی درون فایل java
اگر بخواهیم که متن مورد نظرمان برای نمایش در TextView را با کدهای java تعیین کنیم، باید در فایل java (یعنی در میان کدهای Activity مورد نظر)، کدهای زیر را بنویسیم :
tv.setText("My Text");
در کد بالا، id مربوط به TextView را برابر textView1 در نظر گرفته ایم.
دقت داشته باشید که درون فایل java ، می توانیم متن فارسی بنویسیم (فقط اگر در Eclipse کدنویسی می کنیم، برنامه Eclipse تذکر می دهد که فایل java به شکل مناسب برای متن فارسی Save شود)، اما در کل بهتر است که متن (چه فارسی چه انگلیسی) را به صورت یک رشته (String) در فایل strings.xml تعریف کرده و سپس مقدار آن را از آن فایل دریافت کنیم و با روش setText ، در TextView نمایش بدهیم (اینکه متن در خود فایل java نوشته شود و یا در strings.xml ، بیشتر به سلیقه خود برنامه نویسی بستگی دارد). مثلا فرض کنید که متن مورد نظرمان را در فایل strings.xml و با نام myString تعریف کرده ایم، اکنون برای نمایش آن در TextView ، کدهای زیر را می نویسیم :
String stringName = "myString";
int resID = getResources().getIdentifier(stringName,"string",getPackageName());
String stringToShow = getResources().getString(resID);
tv.setText(stringToShow);
در کد بالا، ابتدا TextView تعریف شده در فایل xml را شناسایی کرده ایم (تگ TextView با id برابر textView1 در فایل xml نوشته شده) :
فرض می کنیم که در فایل strings.xml ، متن (رشته) مورد نظرمان با نام myString تعریف شده است. بنابراین این نام را در یک متغیر از جنس رشته (String) ذخیره می کنیم (که در ادامه می خواهیم آن را به کار ببریم) :
با دو خط زیر از کدها، بر اساس نام متن (رشته) تعریف شده در فایل strings.xml ، مقدارش (متن مورد نظرمان) را دریافت کرده و در متغیری از جنس رشته (String) و با نام stringToShow ذخیره می کنیم :
String stringToShow = getResources().getString(resID);
در آخر، متن (رشته) ذخیره شده در stringToShow را در TextView شناسایی شده نمایش می دهیم :
باسلام وخسته نباشید..گفتین
دقت داشته باشید که درون فایل java ، می توانیم متن فارسی بنویسیم (فقط اگر در Eclipse کدنویسی می کنیم، برنامه Eclipse تذکر می دهد که فایل java به شکل مناسب برای متن فارسی Save شود)، اما در کل بهتر است که متن (چه فارسی چه انگلیسی) را به صورت یک رشته (String) در فایل strings.xml تعریف کرده و سپس مقدار آن را از آن فایل دریافت کنیم و با روش setText ، در TextView نمایش بدهیم (اینکه متن در خود فایل java نوشته شود و یا در strings.xml ، بیشتر به سلیقه خود برنامه نویسی بستگی دارد). مثلا فرض کنید که متن مورد نظرمان را در فایل strings.xml و با نام myString تعریف کرده ایم، اکنون برای نمایش آن در TextView ، کدهای زیر را می نویسیم :
اگرمیشه خط به خط کدهاتونو توضیح بدین شرمنده تازه کارم ممنون میشم بیشتر شرحش بدین.
سلام.
متنی که ذکر کرده بودید، نیاز به تصحیح داشت که بنده آن را تصحیح کردم (آن را هم در متن کلید و هم در نظر شما، تغییر دادم). بنابراین ابتدا توصیه می کنم که دوباره متن را بخوانید.
همچنین کد مورد نظر را بنده در ادامه کلید (مبحث)، به صورت خط به خط توضیح دادم. بنابراین به همان بخش مربوط به کدها مراجعه کنید و بخش افزوده شده را بخوانید.
سلام خسته نباشید باتشکرازتوضیحی ک دادین امامشکلم هنوزحل نشدم /مشکلم دقیقن دراین خطه:
با دو خط زیر از کدها، بر اساس نام متن (رشته) تعریف شده در فایل strings.xml ، مقدارش (متن مورد نظرمان) را دریافت کرده و در متغیری از جنس رشته (String) و با نام stringToShow ذخیره می کنیم :
int resID = getResources().getIdentifier(stringName,"string",getPackageName());
String stringToShow = getResources().getString(resID)
خطی ک قرمز کردم نباید my string باشه؟
دراین صورت ای دی/ مای استرینگو/ میگیره؟اگراینطوه میشه چن ای دی داد تابه صورت رندوم ازبینشون انتخاب کرد؟
خیلی ممنون .بازم شرمنده/
سلام.
بخش قرمز رنگ نباید تغییر داده شود. عبارت myString را در متغیر stringName ذخیره کرده ایم که درون همان پرانتز ذکر شده است (پرانتز روش getIdentifier). بنابراین رشته با نام myString از فایل strings.xml فراخوانی می شود.
دقت شود که رشته مورد نظر در فایل strings.xml باید با کدی مشابه کد زیر تعریف شده باشد (کل کدهای فایل strings.xml را ذکر کرده ایم و فرض کرده ایم که فعلا یک رشته در آن تعریف شده است) :
-----------------------------------------------------------
برای حالتی که گفتید از بین چند رشته (String)، یکی به تصادف انتخاب شود، می توانید چند رشته با نام های مشابه، اما متفاوت در پسوند عددی، تعریف کنید (در فایل strings.xml) :
سپس عددی را به صورت تصادفی تولید می کنید () و بر اساس آن، نام رشته را می سازید (تبدیل عدد به رشته و بعد اتصال به بخش اولیه نام ها که در همه مشترک است). بنابراین نام رشته را به صورت تصادفی به دست آورده ایم و عملیات فراخوانی آن مشابه کدهای ذکر شده است.
خیلی تشکر .مطالبی که گفتین خیلی خوب بود،جواب سوالمو متوجه شدم .
ضمن عرض سلام و خسته نباشید به شما می خواستم خواهش کنم نحوه خواندن یک فایل متنی .txt از روی حافظه اکسترنال و نمایش آن در یک TextView را آموزش دهید.
با تشکر
اره دقیقا من هم از دوستان خواهش میکنم نحوه ست کردن فایل .text رو اموزشش رو بزارن
مثلا mytext.txt از پوشه raw