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

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

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

سلام

من برنامم به این صورته که وقتی یک دکمه رو میزنی یک سری 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(); } }); } });



از آخر این قسمت بپره اون بالا

نظرات

Hossein Lamei Ramandi 10 سال پیش
اون تصاویری که بعد از زدن دکمه نمایش داده میشن ایتدا بصورت گان بوده اند ؟
hamidrezaghaderi 10 سال پیش
ی لیست از ایمیج باتونه که وقتی رو یکیش کلیک میشه تمام دکمه ها گان میشن و ی ویدیو و یک عکس نمایش داده میشه حالا میخام وقتی بک فشار داده میشه دوباره لیست نشون داده بشه.یعنی برنامه بپره به اول نمایش لیست
Hossein Lamei Ramandi 10 سال پیش
این روش اصلا درست نیست یه اکتیویتی دیگه بسازید که وقتی رو ایمیج باتن کیلیک شد بره به اون اکتیویتی و اطلاعات مربوط به آدرس ویدیو و آدرس عکس رو به اون اکتیویتی بفرسته
hamidrezaghaderi 10 سال پیش
آخه من حدود 110 تا دکمه دارم در مجموع اونجوری خیلی کارم سخت میشه فقط اگر بتونم باز دن دکمه بک برنامم بپره به مرحله قبل خیلی کارم راحت میشه
مرتضی 10 سال پیش
سوالتون رو متوجه نشدم یعنی می خواهید بعد از فلان دستور برگرده به فلان خط کد ایا درست فهمیدم
مرتضی 10 سال پیش
به نظر من احتمالا بشه از continue استفاده کنی که ساختارش دقیقا شبیه goto هست
hamidrezaghaderi 10 سال پیش
اره دقیقا همینو میخام مثل حالتی که تو سی ++ لیبل میزنی و با goto برمیگردی به لیبل ولی نتونستم ساختارشو پیاده کنمو این continiue چطور کار میکنه؟
مرتضی 10 سال پیش
continue دقیقا مثل یه loop عمل میکنه وب قرار دادن یه label و استفاده از continue label دوباره خط کد بعد از label اجرا میشه
مرتضی 10 سال پیش
وقتی ارور lable missing داده میشه که lable بعد عبارت continue استفاده بشه

پاسخ‌ها 5

مرتضی 10 سال پیش

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

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


نظرات

Mohammad Vp 10 سال پیش

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

 	   @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;
}

 

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

نظرات

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

ببینید جواب میده؟ البته کلاس 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 10 سال پیش

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

 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();
یا با بستن اکتیویتی مورد نظر در این قسمت حالت قبلی رو سیو کنید

}
}

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

نظرات

Mohammad Vp 10 سال پیش
قربونت امیدوارم به کارت بیاد موفق باشی دوست عزیز
Mohammad Vp 10 سال پیش

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

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

}

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

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

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

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

موفق باشید

نظرات


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