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

کلیک روی  Button  (حل نشده)

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

چجوری میشه کدی نوشت که برای SetOnClickListener که برای یک دکمه هست مشخص کرد که این چندمین باری هست که روی دکمه کلیک کردیم.

به عبارتی میخوام وقتی اگر برای اولین باری هست که وارد button شدیم یه کار و برای بار دهم و یازدهم هم یه کار دیگه انجام بدم.

کد در پایین....

نظرات

Spirit 11 سال پیش
مواد لازم :) SharedPreferences و (switch یا if else)
alireza71 11 سال پیش
ببینین من چند تا چک باکس دارم که قرار بار اول اولی وبار دوم هم دومی وبه همین ترتیب کلیک بشن.مشکل اینجاست که اگر از if استفاده کنیم یا ارایه یا کانتر یا پریفرنس و مقدار شمارش رو در اون ذخیره کنیم برنامه وقتی به کد بعدی میرسه چون شرایط کد قبل صادق هست این کدی که توش هستیم را اجرا میکنه.نتیجش هم این میشه که کدی که قرار توی کلیک مخصوص به خودش اجرا بشه توی همون کلیک اول اجرا میشه و همه چک باکس ها کلیک میشن. ومن هم میخام از این کار جلوگیری کنم. چطوررر؟
وحید 11 سال پیش
درست منظورتون رو نفهمیدم اما اگر منظورتون این هست که اگر دوباره کد اجرا شد مقادیر دوباره از اول خونده بشه می تونید مقدار متغیر رو در هر بار که لازم هست کد دوباره اجرا بشه برابر صفر قرار بدید تا دوباره از اول خونده بشه.

پاسخ‌ها 2

alireza71 11 سال پیش

ببینید این کد قراره برای 8تا چکباکس عمل کنه به این ترتیب که با کلیک اول چک باکس یک تیک بخوره و وقتی دوباره کلیک شد اگر اولی (منظور چکباکس قبلی) تیک داشت بعدی رو تیک دار کنه.همین.

درضمن این کد داخل یک لیست ویو عمل میکنه D:

         btnOk.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

switch (G.result_s1[position]) {
case 0: {
store_state.Chkdone1 = true;
store_state.c = Color.RED;
G.database_s.execSQL("UPDATE mystate SET s1='1' WHERE s_id=" + (position + 1));
G.result_s1[position] = 1;

}
break;

case 1:

{
store_state.Chkdone2 = true;
store_state.c = Color.GREEN;
G.database_s.execSQL("UPDATE mystate SET s2='1' WHERE s_id=" + (position + 1));
G.result_s2[position] = 1;

}

break;

}

switch (G.result_s3[position]) {
case 0: {

store_state.Chkdone3 = true;
store_state.c = Color.MAGENTA;
G.database_s.execSQL("UPDATE mystate SET s3='1' WHERE s_id=" + (position + 1));
G.result_s3[position] = 1;

}
break;
case 1: {
store_state.Chkdone4 = true;
store_state.c = Color.YELLOW;
G.database_s.execSQL("UPDATE mystate SET s4='1' WHERE s_id=" + (position + 1));
G.result_s4[position] = 1;
}
break;
}

dialog.dismiss();
finish();
}
});

نظرات

alireza71 11 سال پیش
حالا مشکل این جاست که وقتی این کد اجرا میشه چک باکس اولی تیک میخوره ولی برای بار دوم چک باکس دوم و سوم با هم تیک میخورن جون شرط برای هر دوتا صادق هست.حالا فرض کنید به جای این 4تا چک باکس 8تا چکباکس بود!!! من از هر ساختاری که به فکرم میرسید انجام دادم ولی بازم همین مشکل چک کردن قبلی و تیک دار کردن بعدی پابر جا بود.حتی پریفرنس یا if چند شرطی...
alireza71 11 سال پیش
حالا مشکل این جاست که وقتی این کد اجرا میشه چک باکس اولی تیک میخوره ولی برای بار دوم چک باکس دوم و سوم با هم تیک میخورن جون شرط برای هر دوتا صادق هست.حالا فرض کنید به جای این 4تا چک باکس 8تا چکباکس بود!!! من از هر ساختاری که به فکرم میرسید انجام دادم ولی بازم همین مشکل چک کردن قبلی و تیک دار کردن بعدی پابر جا بود.حتی پریفرنس یا if چند شرطی... این هم که سوییچ!!!!
ahmadHaeri 11 سال پیش

 
G.result = 0 ; 
btnOk.setOnClickListener(newOnClickListener(){

@Override
publicvoid onClick(View arg0){

switch(G.result){
case0:{
store_state.Chkdone1=true;
store_state.c =Color.RED;
G.database_s.execSQL("UPDATE mystate SET s1='1' WHERE s_id="+(1));
G.result=1;

}
break;

case1:

{
store_state.Chkdone2=true;
store_state.c =Color.GREEN;
G.database_s.execSQL("UPDATE mystate SET s2='1' WHERE s_id="+(2));
G.result=2;

}

break;

case 2:{

store_state.Chkdone3=true;
store_state.c =Color.MAGENTA;
G.database_s.execSQL("UPDATE mystate SET s3='1' WHERE s_id="+(3));
G.result= 3;

}
break;
case 3:{
store_state.Chkdone4=true;
store_state.c =Color.YELLOW;
G.database_s.execSQL("UPDATE mystate SET s4='1' WHERE s_id="+(4));
G.result= 0;
}
break;
}

dialog.dismiss();
finish();
}
});

نظرات


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