آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مقدار دهی شدن اولیه عناصر پس از چرخش

سجاد  10 سال پیش  8 سال پیش
+5 0

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

سجاد صادق زاده

0 0
فکر میکنم وقتی صفحه میچرخه اکتیویتی جاری به حالت onPause میره شما باید در این متد اطلاعات رو ذخیره کنید و در Onresume دوباره استفاده کنید اگر اشتباه میگم لطفا اساتید تصحیح کنند (10 سال پیش)
 برای این سوال 8 پاسخ وجود دارد.
پاسخ به سوال 
Spirit  10 سال پیش
+2 0

سلام ، در این مورد خاص استفاده از SharedPreferences بهتر هست به نظرم چون بعد از خروج از برنامه هم مقادیر ذخیره میشه.، برای ذخیره بدین صورت عمل کنید :

SharedPreferences sp = getSharedPreferences("your_prefs",Activity.MODE_PRIVATE);
SharedPreferences.Editor editor =
sp.edit(); editor.putInt("your_int_key", yourIntValue); editor.commit();

و برای استفاده از مقدار ذخیره شده بدین صورت :

SharedPreferences sp = getSharedPreferences("your_prefs",Activity.MODE_PRIVATE);
int
myIntValue = sp.getInt("your_int_key",0);

0 0
دست شما درد نکنه. برم تستش کنم ببینم کار میکنه یا نه؟ (10 سال پیش)
پاسخ به سوال 
سجاد  10 سال پیش
0 0

باو کمک کنید دیگه اینم سورسش.

 package sajad_foozool.course.app.zekr_shomar;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class ZekrshomarActivity extends Activity {

public int counter;


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

final Button btnReset = (Button) findViewById(R.id.btnReset);
final Button btnPlus = (Button) findViewById(R.id.btnPlus);
final Button btnMinus = (Button) findViewById(R.id.btnMinus);
final TextView txtShomar = (TextView) findViewById(R.id.txtShomar);

Toast.makeText(ZekrshomarActivity.this, "Zekr shomar was opened", Toast.LENGTH_SHORT).show();

btnReset.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
counter = 0;
txtShomar.setText("000000");

}
});

btnMinus.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

if (counter > 0) {
counter--;
txtShomar.setText("" + counter);
}
}
});
btnPlus.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
counter++;
txtShomar.setText("" + counter);

}
});

}
}
پاسخ به سوال 
مجتبی یگانه  10 سال پیش
+2 0

"باو" بیا اینم کمک برنامه کاملا تست شد ، ولی به نظر من اندروید باید خودش انجامش میداد !

متغییر اول ذخیره میشه بعد ، برمیگردونیمش !

هیچ فرقی با داده های ارسال شده در intent نداره پس بهتره اول بخاطر null بودن ، و بعد بخاطر موجود بودن کلید برسی بشه ، چون در زمان اولین اجرا instancestate ذخیره نشده ، و اگر برای null نبودن برسی نشه ، کرش میکنیم که خیلی بده ، مگه نه ؟

 package ir.negano.rotate;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class ActivityRotate extends Activity {

    public int counter;


    // -------------------------------------------- new codes ! --------------------------
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("counter", counter);
    }
//-----------------------------------------------------------------------------

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button btnReset = (Button) findViewById(R.id.btnReset);
        final Button btnPlus = (Button) findViewById(R.id.btnPlus);
        final Button btnMinus = (Button) findViewById(R.id.btnMinus);
        final TextView txtShomar = (TextView) findViewById(R.id.txtShomar);
//--------------------------------------new codes ! --------------------------- ---------------- if (savedInstanceState != null && savedInstanceState.containsKey("counter")) { counter = savedInstanceState.getInt("counter"); txtShomar.setText("counter afer restore from rotate is :" + counter); } //----------------------------- end of new codes --------------------------------------------------------------- btnReset.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { counter = 0; txtShomar.setText("0"); } }); btnMinus.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (counter > 0) { counter--; txtShomar.setText("" + counter); } } }); btnPlus.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { counter++; txtShomar.setText("" + counter); } }); } }

کد هایی که من اضافه کردم مشخص شده  ، موفق باشید

0 0
این رو امتحان کردم ج نداد. :( (10 سال پیش)
0 0
داداش سورسه خودته آآآآآ ، منم رفتم واسش xml ساختم و ایدی هارو ست کردم ، چک کن درست ، ضمتا چرخش شبیه ساز با ctrl+F11 ممکنه (فقط کنترل چپ ) (10 سال پیش)
پاسخ به سوال 
سجاد  10 سال پیش
0 0

میشه کاری کرد که اصلا صفحه نچرخه؟؟
شما بلدی؟؟

پاسخ به سوال 
مجتبی یگانه  10 سال پیش
+1 0

چرا سرچ نمیکنید ، منم با سرچ "چرخش" اینو پیدا کردم 

لینک 

اما از کد ذخیره ی اطلاعات چرخش نترس ، مثله اینتنت هست ، برو دنبالش

موفق باشید

پاسخ به سوال 
PandaStudio  10 سال پیش
+2 0

سلام

منم این مشکل را داشتم با یه سرچ تو stack و خوندن نظرات دوستان با روش زیر مشکلمو حل کردم

باید با استفاده از متد onSaveInstanceState مقدار اولیه را ذخیره کنید و بعد با استفاده از متد onRestoreInstanceState مقدار مورد نظر را بخونید. حالا میتونید متدonCreate را بنویسید و از مقدار counter استفاده بکنید.

با این کار وقتی اسکرین را بچرخونید درسته که اکتیویتی از نو لود میشه اما مقدار قبلی counter حفظ میشه و ریست نمیشه

public int counter = 0;

@Override protected void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putInt("counterValue", counter); }

@Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (savedInstanceState != null && savedInstanceState.containsKey("counterValue")) { counter = savedInstanceState.getInt("counterValue"); } }
0 0
این روشی که شما گفتی فقط مقدار یک متغییر رو نگه میداره من توی یک اکتیویتی حد اقل 30 متغییر دارم چطور میتونم اونهارو نگه داری کنم؟ (10 سال پیش)
0 0
من هرچی سرچ کردم روش دیگه ای پیدا نکردم میتونی متغیر هاتو توی آرایه بریزی. یه راه دیگه هم هست اینکه بی خیال چرخش بشی :) (10 سال پیش)
0 0
متغییر هایی که برای حفظ State فعلی نیاز هست رو نگه دارید ، راه دیگه ای نیست ! (10 سال پیش)
0 0
ممنون ، خیلی کمک کرد! (9 سال پیش)
پاسخ به سوال 
amirmojiry  10 سال پیش
0 0

برای امتحان کردن این حالت چرخش، حتمن باید یه AVD جدید بسازیم؟ یا امکانی وجود داره که توی همون AVD عمودی، حالت چرخش رو هم تست کنیم؟

+1 0
با کنترل + F11 شبیه ساز میچرخه (10 سال پیش)
0 0
Genymotion هم که دیگه مشخصه. یک دکمه برای چرخش در کنار پنجره داره. خیلی بهتر از امولاتور اصلیه (AVD) هست. (10 سال پیش)
پاسخ به سوال 
hojat_babaie  10 سال پیش
+7 0

 

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

 

android:configChanges="keyboard|keyboardHidden|orientation"
0 0
فرقی نمیکنه ، باز هم اطلاعات می پره ! این کد رو کسی استفاده کرده ؟ جواب میده ؟ برای من که جواب نداد چون به هر حال اکتیویتی ReCreate میشه ( با استفاده از LOG متوجه شدم ) . در ضمن اگه قرار بود با این یه خط اطلاعات نپره پس کاربرد onSaveInstanceState و onRestoreInstanceState چیه ؟ (8 سال پیش)
+1 0
لینک (8 سال پیش)

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