بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

سوال در باره ی prefences

مدیریت گفتگو
parsarezaei 12 سال پیش
آخرین تغییر: 12 سال پیش

سلام . من دارم یک برنامه مینویسم که  میخوام یک عدد از ادیت تکست بگیر و  بیاد ببینه که ایا این مقدار از 0 بزرگتر است یا نه اگر بود ذخیره کند و دوباره دفعه ی بعد یک عدد دیگر بگیرد  بیاد با مقداری که قبلا ثبت شده بود مقایسه کند که اگر بزرگتر بود دوباره ذخیره کنه به همین ترتیب تا اخر برای مثال : مثل  ما عدد 5 را وارد میکنیم می بینم که 5 بزرگتر از0 است وبیاد مقدار 5 را ذخیره کنه و دفعه بعدی بیایم مقدار 7 رو بدیم که 7 از 5 بزرگتر است پس 7 رو دخیره کنیم وحالا این بار مقدار 6 رو بدیم که 6 بزرگتر از 7 نیست پس همون مقدار  7 رو ذخیره کند . در واقع میخواستم بدونم  که چه جوری میشه یکه Best Score برای بازی نوشت لطفا راهنمایی کنید مرسی

نظرات

مجتبی یگانه 12 سال پیش
پروژه ی 2048Game استاد رو ببینید :) ، این مورد پیاده سازی شده ، درواقع کار شما به این شکل باید انجام بشه ، آخرین مقدار رو بخونه ، با مقدار فعلی مقایسه کنه ، اگه بزرگ تر بود ، ثبت کنه در غیر اینصورت هیچی ! ، در ضمن مطالعه قسمت Preference ها توصیه میشه :)

پاسخ‌ها 1

override 12 سال پیش

اینجا یه نمونه ساده نوشتم به عنوان مثال، البته در صورتی که نمیخواید از کلاس  Edit Text که به صورت پیشفرض برای preferences در نظر گرفته شده استفاده کنید.اگر هم قصد استفاده از همون رو دارید که کارتون آسونتره ، امیدوارم به کارتون بیاد.

    private EditText                edtTest;
private Button btnTest;
public static SharedPreferences preferences;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.layout_games);

edtTest = (EditText) findViewById(R.id.edtTest);
btnTest = (Button) findViewById(R.id.btnTest);

btnTest.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

int gameScore = getGameScore();

preferences = PreferenceManager.getDefaultSharedPreferences(G.context);

int savedScore = preferences.getInt("Stored_Score", 0);

if (gameScore > savedScore) {
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("Stored_Score", gameScore);
editor.commit();
Toast.makeText(G.context, "New Score saved ", Toast.LENGTH_SHORT).show();

} else {
edtTest.setText("" + savedScore);
Toast.makeText(G.context, "EditText value Changed to " + savedScore, Toast.LENGTH_LONG).show();
}
}
});

}


private int getGameScore() {

int Score = 0;
try {
Score = Integer.parseInt(edtTest.getText().toString());
}
catch (NumberFormatException e) {
e.printStackTrace();
}
return Score;

}

 

نظرات

parsarezaei 12 سال پیش
سلام . مرسی دوست عزیز ولی من میخوام وقتی دفعه بعد که برنامه اجرا میشه اخرین مقدار داخل ادیت باکس باشه و ذخیره شده باشه و اگر مقدار جدیدی رو که وارد میکنیم از مقدار قبلی بزرگتر بود جایگزین کند در کل میخوام نیاز نباشه تا هر دفعه بر روی دکمه کلیک کنم تا مقدار ذخیره شده قبلی نمایش داده بشه
override 12 سال پیش
خب من فقط یه مثال ساده زدم اون پروژه ی 2048 رو هم که ALU گفتن ببینید احتمال زیاد جوابتون رو میگیرید من هنوز خودم فرصت نکردم ببینم از onResume هم به جای دکمه فکر کنم میتونید استفاده کنید
parsarezaei 12 سال پیش
مرسی. چشم حتما انجام میدم

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