مشکلی که دارم اینه که تعدادی ادیت تکست رو داخل یک حلقه تودرتو ساخته م و همه شون رو با یک Event Name مشابه Initialize کرده م و همه چیزش به درستی کار می کنه ولی وقتی که می خواهم از دو تابع FocusChanged و TextChanged و استفاده از Sender برای مشخص کردن اینکه کدوم EditText فوکوس داره استفاده کنم، فقط و فقط آخرین Edittext ساخته شده داخل حلقه دریافت میشه و Sender آخرین ادیت تکست رو دریافت می کنه.
RequestFocus استفاده کردم و نتیجه ای نگرفتم و باز هم آخرین Edittext ساخته شده رو فراخوانی می کنه.
واقعیت اینه که وقتی با Button ها کار می کنم، همه چیز مشخصه چون یا روی دکمه کلیک شده یا نشده و راحت میشه Sender رو استفاده کرد، ولی در EditText من، Focus روی یک EditText دیگه هست در حالی که من در حال ایجاد تغییر بر روی دیگری هستم. خوشحال میشم یک نفر یک یا چند راه حل خوب بهم معرفی کنه تا بررسی بکنم.
Sub Samplesub(rows As Int, columns As Int)
maxrc = Max(rows, columns)
If Power(maxrc,2) > 101 Or rows < 2 Or columns < 2 Then
Return
End If
Try
plabel.RemoveAllViews
plabel.RemoveView
pedittext.RemoveAllViews
pedittext.RemoveView
Catch
Log("Cant Remove Panels")
End Try
cd.Initialize2(Colors.White, 0, 1dip, Colors.Black)
Dim label1 As Label
plabel.Initialize("plabel")
pedittext.Initialize("pedittext")
Activity.AddView(plabel, 0, 0, x, y)
Activity.AddView(pedittext, 0, 0, x, y)
For j = 1 To columns
For i = 1 To rows
If j = 1 Then
label1.Initialize("")
plabel.AddView(label1, x-x/(maxrc+2)-(i)*(x/(maxrc+2)), 0, x/(maxrc+2), x/(maxrc+2))
label1.Text = i
label1.Gravity = Gravity.CENTER
End If
et.Initialize("et")
et.Gravity = Gravity.CENTER
et.Background = cd
et.TextColor = Colors.black
inputmethod1.SetCustomFilter(et,et.INPUT_TYPE_TEXT,".ابتثجچحخدذرزژسشصضطظعغفقکگلمنوهی")
inputmethod1.SetLengthFilter(et,1)
et.Tag = i+(j-1)*column
et.TextSize = 40 - 2*(maxrc)
pedittext.AddView(et, x-x/(maxrc+2)-(i)*(x/(maxrc+2)), j*(x/(maxrc+2)), x/(maxrc+2), x/(maxrc+2))
Dim jo As JavaObject = et
jo.RunMethod("setPadding", Array As Object(0, 1dip, 0, 0))
Next
label1.Initialize("")
plabel.AddView(label1,x-x/(maxrc+2), j*(x/(maxrc+2)), x/(maxrc+2), x/(maxrc+2))
label1.Text = j
label1.Gravity = Gravity.CENTER
Next
End Sub
Sub et_FocusChanged (HasFocus As Boolean)
If HasFocus = False Then
For Each v As View In pedittext.GetAllViewsRecursive
Dim e2 As EditText = v
If e2.Text = "." Then
cd.Initialize2(Colors.Black, 0, 1dip, Colors.Black)
e2.Background = cd
e2.TextColor = Colors.White
Else
e2.Color = Colors.White
e2.TextColor = Colors.Black
End If
Next
End If
End Sub
Sub et_TextChanged (Old As String, New As String)
Dim emi As EditText = Sender
If emi.RequestFocus = True Then
Log(emi.Tag)
End If
End Sub
سوال
razavioo 310
سلام دوستان عزیز
مشکلی که دارم اینه که تعدادی ادیت تکست رو داخل یک حلقه تودرتو ساخته م و همه شون رو با یک Event Name مشابه Initialize کرده م و همه چیزش به درستی کار می کنه ولی وقتی که می خواهم از دو تابع FocusChanged و TextChanged و استفاده از Sender برای مشخص کردن اینکه کدوم EditText فوکوس داره استفاده کنم، فقط و فقط آخرین Edittext ساخته شده داخل حلقه دریافت میشه و Sender آخرین ادیت تکست رو دریافت می کنه.
RequestFocus استفاده کردم و نتیجه ای نگرفتم و باز هم آخرین Edittext ساخته شده رو فراخوانی می کنه.
واقعیت اینه که وقتی با Button ها کار می کنم، همه چیز مشخصه چون یا روی دکمه کلیک شده یا نشده و راحت میشه Sender رو استفاده کرد، ولی در EditText من، Focus روی یک EditText دیگه هست در حالی که من در حال ایجاد تغییر بر روی دیگری هستم. خوشحال میشم یک نفر یک یا چند راه حل خوب بهم معرفی کنه تا بررسی بکنم.
لینک ارسال
به اشتراک گذاری در سایت های دیگر
4 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.