بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
کلیک روی Button (حل نشده)
چجوری میشه کدی نوشت که برای SetOnClickListener که برای یک دکمه هست مشخص کرد که این چندمین باری هست که روی دکمه کلیک کردیم.
به عبارتی میخوام وقتی اگر برای اولین باری هست که وارد button شدیم یه کار و برای بار دهم و یازدهم هم یه کار دیگه انجام بدم.
کد در پایین....
0
0
مواد لازم :) SharedPreferences و (switch یا if else) (11 سال پیش)
0
0
ببینین من چند تا چک باکس دارم که قرار بار اول اولی وبار دوم هم دومی وبه همین ترتیب کلیک بشن.مشکل اینجاست که اگر از if استفاده کنیم یا ارایه یا کانتر یا پریفرنس و مقدار شمارش رو در اون ذخیره کنیم برنامه وقتی به کد بعدی میرسه چون شرایط کد قبل صادق هست این کدی که توش هستیم را اجرا میکنه.نتیجش هم این میشه که کدی که قرار توی کلیک مخصوص به خودش اجرا بشه توی همون کلیک اول اجرا میشه و همه چک باکس ها کلیک میشن. ومن هم میخام از این کار جلوگیری کنم. چطوررر؟ (11 سال پیش)
0
0
درست منظورتون رو نفهمیدم اما اگر منظورتون این هست که اگر دوباره کد اجرا شد مقادیر دوباره از اول خونده بشه می تونید مقدار متغیر رو در هر بار که لازم هست کد دوباره اجرا بشه برابر صفر قرار بدید تا دوباره از اول خونده بشه. (11 سال پیش)
0
0
.
(11 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
alireza71
11 سال پیش
0
0
ببینید این کد قراره برای 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();
}
});
حالا مشکل این جاست که وقتی این کد اجرا میشه چک باکس اولی تیک میخوره ولی برای بار دوم چک باکس دوم و سوم با هم تیک میخورن جون شرط برای هر دوتا صادق هست.حالا فرض کنید به جای این 4تا چک باکس 8تا چکباکس بود!!!
من از هر ساختاری که به فکرم میرسید انجام دادم ولی بازم همین مشکل چک کردن قبلی و تیک دار کردن بعدی پابر جا بود.حتی پریفرنس یا if چند شرطی...
(11 سال پیش)
حالا مشکل این جاست که وقتی این کد اجرا میشه چک باکس اولی تیک میخوره ولی برای بار دوم چک باکس دوم و سوم با هم تیک میخورن جون شرط برای هر دوتا صادق هست.حالا فرض کنید به جای این 4تا چک باکس 8تا چکباکس بود!!!
من از هر ساختاری که به فکرم میرسید انجام دادم ولی بازم همین مشکل چک کردن قبلی و تیک دار کردن بعدی پابر جا بود.حتی پریفرنس یا if چند شرطی... این هم که سوییچ!!!!
(11 سال پیش)
پاسخ به سوال
ahmadHaeri
11 سال پیش
0
0
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();
}
});
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .