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

ایجاد پرش در برنامه

hamidrezaghaderi  9 سال پیش  9 سال پیش
0 0

سلام

من برنامم به این صورته که وقتی یک دکمه رو میزنی یک سری image button  که دارم GONE  میشه و یک سری تصویر جدید نشون میده حالا میخام وقتی دکمه بک فشار داده میشه دوباره پرش کنه برنامه به همون مرحله قبل اما ظاهرا تو جاوا نمیشه لیبل زد و از GO TO  استفاده کرد.بنظرتون چطوری پیادش کنم؟

ممنون

 


این کد منه میخام برنامه برگرده این بالا!


 btnabs.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { btn1.setImageResource(R.drawable.abs10); btn2.setImageResource(R.drawable.abs11); btn3.setImageResource(R.drawable.abs12); btn4.setImageResource(R.drawable.abs13); btn5.setImageResource(R.drawable.abs14); btn6.setImageResource(R.drawable.abs15); btn7.setImageResource(R.drawable.abs16); btn8.setImageResource(R.drawable.abs17); btn1.setVisibility(View.VISIBLE); btn2.setVisibility(View.VISIBLE); btn3.setVisibility(View.VISIBLE); btn4.setVisibility(View.VISIBLE); btn5.setVisibility(View.VISIBLE); btn6.setVisibility(View.VISIBLE); btn7.setVisibility(View.VISIBLE); btn8.setVisibility(View.VISIBLE); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { btn1.setVisibility(View.GONE); btn2.setVisibility(View.GONE); btn3.setVisibility(View.GONE); btn4.setVisibility(View.GONE); btn5.setVisibility(View.GONE); btn6.setVisibility(View.GONE); btn7.setVisibility(View.GONE); btn8.setVisibility(View.GONE); img2.setVisibility(View.VISIBLE); vp2.setVisibility(View.VISIBLE); background.setBackgroundColor(Color.WHITE); final VideoView vp2 = (VideoView) findViewById(R.id.vp2); Uri uri = Uri.parse("android.resource://" + G.packageName + "/" + R.raw.pingu002); vp2.setVideoURI(uri); vp2.start(); vp2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mp) { vp2.start(); } }); } });



از آخر این قسمت بپره اون بالا
+1 0
اون تصاویری که بعد از زدن دکمه نمایش داده میشن ایتدا بصورت گان بوده اند ؟ (9 سال پیش)
0 0
ی لیست از ایمیج باتونه که وقتی رو یکیش کلیک میشه تمام دکمه ها گان میشن و ی ویدیو و یک عکس نمایش داده میشه حالا میخام وقتی بک فشار داده میشه دوباره لیست نشون داده بشه.یعنی برنامه بپره به اول نمایش لیست (9 سال پیش)
+1 0
این روش اصلا درست نیست یه اکتیویتی دیگه بسازید که وقتی رو ایمیج باتن کیلیک شد بره به اون اکتیویتی و اطلاعات مربوط به آدرس ویدیو و آدرس عکس رو به اون اکتیویتی بفرسته (9 سال پیش)
0 0
آخه من حدود 110 تا دکمه دارم در مجموع اونجوری خیلی کارم سخت میشه فقط اگر بتونم باز دن دکمه بک برنامم بپره به مرحله قبل خیلی کارم راحت میشه (9 سال پیش)
+1 0
سوالتون رو متوجه نشدم یعنی می خواهید بعد از فلان دستور برگرده به فلان خط کد ایا درست فهمیدم (9 سال پیش)
+1 0
به نظر من احتمالا بشه از continue استفاده کنی که ساختارش دقیقا شبیه goto هست (9 سال پیش)
0 0
اره دقیقا همینو میخام مثل حالتی که تو سی ++ لیبل میزنی و با goto برمیگردی به لیبل ولی نتونستم ساختارشو پیاده کنمو این continiue چطور کار میکنه؟ (9 سال پیش)
+1 0
continue دقیقا مثل یه loop عمل میکنه وب قرار دادن یه label و استفاده از continue label دوباره خط کد بعد از label اجرا میشه (9 سال پیش)
0 0
ارور lable missing میده همش! (9 سال پیش)
0 0
وقتی ارور lable missing داده میشه که lable بعد عبارت continue استفاده بشه (9 سال پیش)
0 0
label قبلشه ولی ارور میده! (9 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
مرتضی  9 سال پیش
+1 0

به طور مثال به کد زیر نگاه کن که مدام Continue رو چاپ می کنه

 before:{
System.out.println("Continue");continue before;
}


پاسخ به سوال 
Mohammad Vp  9 سال پیش
+1 0

از این کد استفاده کنید

 	   @Override
public void onBackPressed() {

محل قرارگیری کدهای شما جهت اجرا شدن در زمان کلیک شدن برروی دکمه back
return;
}

از متود های VISIBLE بجای Gone برای بازگشت ایتم های رفته استفاده کنید در داخل این متود و این کد رو در اکتیویتی بزارید که قصد دارید هنگام برگشت از اون اکتیویتی اجرا بشه

به عنوان مثال حالت برعکس حالت شما:

 
  @Override
public void onBackPressed() {

btn1.setVisibility(View.GONE); btn2.setVisibility(View.GONE); btn3.setVisibility(View.GONE); btn4.setVisibility(View.GONE); btn5.setVisibility(View.GONE); btn6.setVisibility(View.GONE); btn7.setVisibility(View.GONE); btn8.setVisibility(View.GONE);
btn1
.setVisibility(View.
GONE);
btn2.setVisibility(View.
VISIBLE); btn3.setVisibility(View.VISIBLE); btn4.setVisibility(View.VISIBLE); btn5.setVisibility(View.VISIBLE); btn6.setVisibility(View.VISIBLE); btn7.setVisibility(View.VISIBLE); btn8.setVisibility(View.VISIBLE);
return;
}

 

  امیدوارم جواب بگیرید موفق باشید

0 0
خوب تو این حالت اگه دوباره کاربر رو کلیدها کلیک کنه که دیگ کار نمیکنه! (9 سال پیش)
+1 0
میتونید دکمه خروج بزارید اول این متود ها اجرا شه بعد به اکتیویتی قبلی برگرده (9 سال پیش)
0 0
تمام این اتفاقا داخل یک اکتیویتی میافته واس همین فقط کافیه برگرده کدارو از بالا اجرا کنه! (9 سال پیش)
+3 0
برای اینکه دوباره برگرده و از اول کار کنه < توی جاوا نداریم همچین چیزی < شما باید کدهاتون رو توی متد قرار بدید < و متد رو صدا بزنید < یک True / False برای دستور IF بزارید < هر بار که True بود متد مخفی کردن رو صدا بزنه و False بود متد نمایش دادن رو اجرا کنه (9 سال پیش)
0 0
آخه کدامو خیلیشو نوشتم همه چی بهم میریزه!نمیشه کلشو داخل ی while بی نهایت بزارم بعد بگم وقتی بک فشار داده شد مقدارشو بگیرم و از همونجا continue بشه برنامه؟ (9 سال پیش)
0 0
آخه کدامو خیلیشو نوشتم همه چی بهم میریزه!نمیشه کلشو داخل ی while بی نهایت بزارم بعد بگم وقتی بک فشار داده شد مقدارشو بگیرم و از همونجا continue بشه برنامه؟ (9 سال پیش)
+1 0
من نمیدونم چرا میخوای از countinue استفاه کنید. خب کل عبارت بالا رو بریز داخل یک متد مثلا Visisble() که یک ورودی عدد داره. بعد این متد داخل متد onbackPressd بزارید..واسه اینکه تشخصیص بدید چند بار کلیک کرده.از اون ورودی عدد استفاده کنید. اگر 1 بود عبارت داخلش اجرا بشه .اگر بزرگتر از یک بود کار خاصی انجام نده (9 سال پیش)
+1 0
با فرمایشات کریس عزیز موافقم. خلاصه یک کد رو چند جور متفاوت میشه نوشت میشه حرفه ایی تر از این میشه نوشت و میشه مبتدی تر نوشت ولی بنده واسه اینکه متوجه بشید کدارو مستقیم گزاشتم داخل متود که منظورمو درک کنید بازم بیشتر تحقیق کنید کد بهتری میتونید بنویسید که حرفه ایی تر باشه! موفق باشید (9 سال پیش)
0 0
باید یک خورده بیشتر روش کار کنم به فکر فرو رفتم! (9 سال پیش)
پاسخ به سوال 
Mohammad Vp  9 سال پیش
+1 0

ببینید جواب میده؟ البته کلاس G رو اگه تعریف نکردید اسم اکتیویتی خودتتون رو بزارید مثلا : Mainactivity.this.finish();

 
  @Override
publicvoid onBackPressed(){

btn1.setVisibility(View.GONE); btn2.setVisibility(View.GONE); btn3.setVisibility(View.GONE); btn4.setVisibility(View.GONE); btn5.setVisibility(View.GONE); btn6.setVisibility(View.GONE); btn7.setVisibility(View.GONE); btn8.setVisibility(View.GONE);
btn1
.setVisibility(View.
GONE);
btn2.setVisibility(View.
VISIBLE); btn3.setVisibility(View.VISIBLE); btn4.setVisibility(View.VISIBLE); btn5.setVisibility(View.VISIBLE); btn6.setVisibility(View.VISIBLE); btn7.setVisibility(View.VISIBLE); btn8.setVisibility(View.VISIBLE);

G.currentActivity.finish();

return;
}
پاسخ به سوال 
Mohammad Vp  9 سال پیش
+1 0

اینم یک متود که الان نوشتم واست:

 publicvoid onBackPressed(){
    backpress =(backpress +1);
btn1.setVisibility(View.GONE); btn2.setVisibility(View.GONE); btn3.setVisibility(View.GONE); btn4.setVisibility(View.GONE); btn5.setVisibility(View.GONE); btn6.setVisibility(View.GONE); btn7.setVisibility(View.GONE); btn8.setVisibility(View.GONE);
btn1
.setVisibility(View.
GONE);
btn2.setVisibility(View.
VISIBLE); btn3.setVisibility(View.VISIBLE); btn4.setVisibility(View.VISIBLE); btn5.setVisibility(View.VISIBLE); btn6.setVisibility(View.VISIBLE); btn7.setVisibility(View.VISIBLE); btn8.setVisibility(View.VISIBLE);

Toast
.makeText(getApplicationContext(),"اجرا شد ",Toast.LENGTH_SHORT).show();
if(backpress>1){

Toast
.makeText(getApplicationContext()," نمیتوانید دوباره یک متود را اجرا کنید ",Toast.LENGTH_SHORT).show();
یا با بستن اکتیویتی مورد نظر در این قسمت حالت قبلی رو سیو کنید

}
}

احتمال زیاد این بیشتر به کارتون بیاد

+1 0
مرسی عزیزم (9 سال پیش)
0 0
قربونت امیدوارم به کارت بیاد موفق باشی دوست عزیز (9 سال پیش)
پاسخ به سوال 
Mohammad Vp  9 سال پیش
+2 0

 
If (btn1.getVisibility == View.Gone){
btn1.setVisibility(View.VISIBLE);

}else{
btn1.setVisibility(View.GONE);

}

خوب تو متود بک میتونی از این حالت استفاده کنی(از این شرط برای تک تکه مقادیرت)

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

این تیکه کد کاره جنابه کریس هستش که گفتن این راه بهتری هست و منم گفتم براتون بزارم تا نتیجه بهتری بگیرید!

تشکر از کریس عزیز

موفق باشید


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