Выполнение метода с параметрами и выдача возвращаемого значения.
Я подготовил этот Ruby-Class:
require 'ruboto/widget'
require 'ruboto/util/toast'
ruboto_import_widgets :Button, :LinearLayout, :TextView, :EditText
# http://xkcd.com/378/
class MinecraftDistanceCalculatorActivity
def onCreate(bundle)
super
set_title 'Minecraft Distance Calculator'
self.content_view =
linear_layout :orientation => :vertical do
@startx = text_view :text => 'Enter start x-axe', :id => 42,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@edit_text = edit_text :id => 44,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@startz = text_view :text => 'Enter start z-axe', :id => 45,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@edit_text = edit_text :id => 46,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@targetx = text_view :text => 'Enter target x-axe', :id => 47,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@edit_text = edit_text :id => 48,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@targetz = text_view :text => 'Enter target z-axe', :id => 49,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
@edit_text = edit_text :id => 50,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0
button :text => 'Calculate!',
:layout => {:width => :match_parent},
:id => 43, :on_click_listener => proc { distance }
# @text_view = text_view :text => "The distance is #{distance} blocks", :id => 50,
# :layout => {:width => :match_parent},
# :gravity => :center, :text_size => 16.0
end
rescue Exception
puts "Exception creating activity: #{$!}"
puts $!.backtrace.join("\n")
end
private
def self.distance(startx, startz, targetx, targetz)
calcx = startx - targetx
calcz = startz - targetz
calcdist = calcx**2 + calcz**2
distance = Math.sqrt(calcdist).round
toast 'Calculated distance'
return distance
end
Теперь я хотел бы получить доступ к кнопке с использованием конкретных параметров startx, startz, targetx и targetz. Затем я планирую выдать возвращаемую переменную "distance" как text_field. Может кто знает, как это сделать?
1 ответ
Решение
Согласно вашему комментарию, вы можете попробовать это:
:on_click_listener => proc { @distance = self.class.distance(@startx, @startz, @targetx, @targetz) }
Затем просто используйте ваше расстояние с @distance
@text_view = text_view :text => "The distance is #{@distance} blocks", :id => 50,
:layout => {:width => :match_parent},
:gravity => :center, :text_size => 16.0