PDA

View Full Version : خواهشمندم کمک کنید کمک فوری میخواهم .



harani
یک شنبه 24 دی 1391, 13:35 عصر
من یک اکتیوتی دارم که شامل یک دکمه (button) و یک textview است .
در کلاس جاوا اکتیوتی یک int تعریف کردم (مثلاً int c) بعد تو onCreate یه مقدار اولیه 1 به آن دادم.
تو رویداد onclick دکمه گفتم که مقدار c رو یک واحد اضافه کن (یعنی همون ++c) بعد مقدار رو در textview نشون بده .
حالا مشکل من اینه که کاربر با فشردن کلید مثلاً عدد 3 رو چاپ کرده زمانی state دستگاه (land یا port) رو تغیر میده دوباره مقدار اولیش (یعنی همون 1) چاپ میشه من چجوری میتونم بگم عدد 3 با تغییر حالت دستگاه تغییر نکنه ؟؟؟؟؟
توجه کنید که من از دو فولدر مجزاء برای دو حالت land و port استفاده میکنم من چجوری میتونم مقدارو ثابت نگه دارم . خواهشمندم هرچه سریعتر جواب بدید . هر کاری کردم از متد onSaveInstanceState نتوانستم جواب بگیرم لطفاً راهنمایی کنید .

از کد android:configChanges="screenSize|keyboardHidden|orientation" تو minifest نمیخوام استفاده کنم .


با سپاس

hamid_hr
یک شنبه 24 دی 1391, 18:40 عصر
سلام

تو اين سايت يك مثال نوشته

http://www.eigo.co.uk/labs/managing-state-in-an-android-activity/

فك كنم فهميدنش راحت باشه

shahin bahari
یک شنبه 24 دی 1391, 19:43 عصر
در کلاس جاوا اکتیوتی یک int تعریف کردم (مثلاً int c) بعد تو onCreate یه مقدار اولیه 1 به آن دادم.
تو رویداد onclick دکمه گفتم که مقدار c رو یک واحد اضافه کن (یعنی همون ++c) بعد مقدار رو در textview نشون بده .
حالا مشکل من اینه که کاربر با فشردن کلید مثلاً عدد 3 رو چاپ کرده زمانی state دستگاه (land یا port) رو تغیر میده دوباره مقدار اولیش (یعنی همون 1) چاپ میشه من چجوری میتونم بگم عدد 3 با تغییر حالت دستگاه تغییر نکنه ؟؟؟؟؟خوب وقتی جهت صفحه رو عوض میکنید برنامه pause میشه و دوباره onCreat رو اجرا میکنه. شما تو onCreat بهش گفتید دوباره 1 بشه! پس بدیهی هسن که با عوض شدن جهت 1 رو برگردونه! توی onCreat مقدار اولیه ندید!

خواهشمندم هرچه سریعتر جواب بدید . هر کاری کردم از متد onSaveInstanceState نتوانستم جواب بگیرم لطفاً راهنمایی کنید اینجا میخوایم مقدار 3 تا رشته رو ذخیره کنیم:
تو تابع restore me مقادیر رو از باندلی که توش ذخیره شده خارج میکنیم و تو تابع onSave.... هم هرچی که لازم بود رو ذخیره میکنیم. فقط دقت کنید به نوع هایی که میخونید و مینویسید.فکر نکنم لازم باشه که بگم کلید هایی که میتویسید و میخونید هم باید یکی باشه.

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

textStatus = (TextView)findViewById(R.id.textStatus);
textIntValue = (TextView)findViewById(R.id.textIntValue);
textStrValue = (TextView)findViewById(R.id.textStrValue);


restoreMe(savedInstanceState);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("textStatus", textStatus.getText().toString());
outState.putString("textIntValue", textIntValue.getText().toString());
outState.putString("textStrValue", textStrValue.getText().toString());
}
private void restoreMe(Bundle state) {
if (state!=null) {
textStatus.setText(state.getString("textStatus"));
textIntValue.setText(state.getString("textIntValue"));
textStrValue.setText(state.getString("textStrValue"));
}
}