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



shared prefزمان کنونی: ۱۳۹۵/۰۹/۱۴، ۰۶:۴۰ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: momayyezi_m
آخرین ارسال: momayyezi_m
پاسخ 11
بازدید 3945

رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
shared pref

shared pref

#1
 باسلام مزاحم همیشگی هستم


کد:
switch(checkedId)
{
case R.id.radio1:
    SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
    SharedPreferences.Editor editor = shared.edit();
    editor.putString("fonts", "tahoma.ttf");
    editor.apply();
    finish();
    break;
case R.id.radio2:
    SharedPreferences shared1 = getSharedPreferences("Prefs", MODE_PRIVATE);
    SharedPreferences.Editor editor1 = shared1.edit();
    editor.putString("fonts", "BNazanin.ttf");
    editor.apply();
    finish();
    break;
}

و میخوام که تو صفحه اصلی از این کد استفاده کنم


کد:
SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
String string_from_sp = shared.getString("fonts", "BZar.ttf");

و بعد

کد:
Typeface face = Typeface.createFromAsset(getAssets(), "font/"+fonts+"");

الان مشکل کجا هستش؟
پاسخ

shared pref

#2
سلام دوست عزیز. 
یعنی برنامه force close داده ؟
Typeface رو فعلا بگذارید کنار و ببینید که مشکل از SharedPreferences هست یا نه (کد مربوط به Typeface را حذف کرده و ببینید که باز هم مشکل داره یا نه). شاید  SharedPreferences  را درست تعریف نکرده اید.
در ضمن، همیشه هنگام استفاده از finish محتاط باشید زیرا بر حسب تجربه متوجه شده ام که اگر بلافاصله بعد از برخی از دستورها قرار بگیرد، باعث ایجاد force close می شود. در این مواقع می توان از AsyncTask استفاده کرد. البته فکر نمی کنم در دستورات شما مشکل از این مورد باشد، ولی گفتم این مورد را هم تذکر بدهم (با حذف finish  و یک بار اجرای برنامه اندروید، می توانید متوجه بشوید که مشکل از آن بوده یا نه).
در کل، وقتی کاربران در مورد خظایابی زبان های برنامه نویسی مثل متلب (MATLAB) سوال می پرسند، می توان سریع برنامه را اجرا کرده و مشکل را پیدا کرد، ولی برنامه نویسی اندروید، خطایابی آن زیاد ساده نیست و نمی توان با تنها دیدن کدها، مشکل را پیدا کرد. 
امیدوارم مشکل از همین مواردی باشد که تذکر دادم (تا زودتر حلش کنید).
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط momayyezi_m

shared pref

#3
ممنون ادمین جان از جوابتون

یکی از مشکلاتی که هستش اینه که برای radio  ها هر کدام تو تا متغیر editor , share  تعریف کردم که ارور dublicated item  رو نده
ولی در کلاس بعدیم که میخوام از اطلاعات ذخیره شده استفاده کنم یعنی کد زیر


کد:
String string_from_sp = shared.getString("fonts", "BZar.ttf");

فقط یکی از اون دو تا متغییر )shared1 ,shared ) رو میتونم بنویسم -در صورتی که ممکنه فرد تو صفحه فونت رادیو دومی رو انتخاب کرده باشه که با متغیر shared1  ذخیره شده
اینجا مشکلم هستش
با تشکر پیشاپیش از جوابتون
پاسخ

shared pref

#4
باید shared و editor (که برای SharedPreferences تعریف کرده اید) را به صورت public تعریف کنید تا این مشکل به وجود نیاید. 
اگر در این زمینه اطلاعاتی ندارید، بگید تا یک مبحث برایتان بنویسم.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط momayyezi_m

shared pref

#5
معمولا که با توجه به ارور هایی که اکلیپس میده متغیر هام رو public  یا final  میذارم ولی دقیق نه اطلاعاتی ندارم

الان مثلا من تو برنامم دو تا متغییر گذاشتم یکی boolean  و یکی string
boolean خوب کار میکنه ولی string  نه و force close  میده .عکس زیر رو نگاه کنید.درست وقتی وارد این اکتیویتی میشم force close میده حتی متغییر رو public کردم ولی بازم هیجی

   

ممنون
پاسخ

shared pref

#6
اولین چیزی که جلب توجه میکنه، کلمه فارسی است که در setText نوشته اید. شما نمی توانید در میان کدهای java ، حروف فارسی به کار ببرید (مگر اینکه صفحه به صورت UTF-8 ذخیره شده باشه که معمولا برنامه eclipse خودش اخطار میده). تنها در فایل های xml است که باید کلمات فارسی را بنویسید و سپس توسط کدهای java ، آنها را فراخوانی کنید.
این مورد را درست کنید و دوباره برنامه را تست نمایید.
اگر درست نشد، تمامی کدهای صفحه را اینجا قرار بدهید.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط momayyezi_m

shared pref

#7
من چند تا اکتیویتی دارم که توشون فارسی نوشتم و مشکلی پیدا نکردم و این کاری هم که گفتین انجام دادم ولی بازم مشکل داشت

   

و

   

اینم کدهای اکتیویتی prefs

کد:
package com.example.newdaru;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
public class Prefs extends PreferenceActivity {
    @Override protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
        String fonts = prefs.getString("fonts", "BHOMA.ttf"); 
        Boolean b = prefs.getBoolean("FIRSTRUN", true); 
    } 
}

ممنون
پاسخ

shared pref

#8
یه سوال!!!

خط کد type face رو نگاه کنید
الان یه سوال! اون جایی که نوشته getAssets()  رو نباید تغییر بدم؟ چون که الان من چیزی رو که get  نمیکنم
این کد رو قبلن گذاشته بودم که اطلاعات رو از یه کلاس دیگه بگیره ولی الان که دارم از shared pref  استفاده میکنم پ احتمالا غلطه

جاش چی باید بذارم؟
پاسخ

shared pref

#9
متاسفانه در برنامه نویسی اندروید، نمیشه در خطایابی زیاد کمک کرد، چون تنها کسی که کل پروژه رو ساخته، میدونه چی به چیه. 
در ضمن، من همیشه هر بخشی رو که به برنامه اضافه می کنم، سریع برنامه رو اجرا می کنم تا ببینم مشکلی نداشته باشه. حدس می زنم شما دیر به دیر برنامه را اجرا می کنید که باعث می شود به دلیل افزوده شدن بخش های مختلف و همچنین حذف بخش های قدیمی، گیج شوید که مشکل از کجاست.
هر بخشی که به آن مشکوک هستید را حذف کنید و دوباره برنامه را تست نمایید. آنقدر ادامه بدهید تا سرانجام مشکل را پیدا کنید (یا از روش های خطایابی استفاده کنید، البته من خودم، حذف کدها و اجرای سریع برنامه را ترجیح می دهم و با پیدا کردن بخش مربوط به خطا، به سراغ شیوه برنامه نویسی سایر برنامه نویسان برای آن بخش می روم و همین هم باعث یادگیری تعداد زیادی نکته جدید می شود، یعنی یک خطای آزاردهنده می تواند تبدیل به انگیزه ای برای یادگیری نکات جدید شود که بسیار لذت بخش خواهد بود). 
در مورد getassets ، تا به امروز به این شکل از آن استفاده نکرده ام و بنابراین، در این مورد نمی تونم راهنماییتون کنم.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط momayyezi_m

shared pref

#10
همون خط typeface  رو که پاک کردم برنامه اجرا شدش ولی واقعا نمیدونم چه جوری تغییر فونت رو بذارم تو shared pref

به هر حال ممنون لطف کردید
پاسخ
 سپاس شده توسط admin

shared pref

#11
مشکل از فایل فونت بودش
مثی که اندروید همه فونت ها رو پشتیبانی نمیکنه!!!!
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


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

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)