【发布时间】:2015-05-30 15:43:34
【问题描述】:
对 java 很陌生,但是经过教程等之后,我了解了基础知识。我正在尝试调用我创建的方法来查找设备的位置,然后将字符串附加到文本视图。如何从我的按钮单击中调用此方法?我尝试将所有代码放在我的按钮中,这样它就会在单击时运行,但它不喜欢那样。按钮单击是否必须包含View 参数,或者因为当我使用public onLocationChanged(Location location) 时,我收到一条错误消息,指出它找不到public onLocationChanged(View)。我试着做public onLocationChanged(View view, Location location)但我在logcat中得到了同样的错误。提前感谢您的任何帮助或反馈!
编辑:我在 android 开发网站上看到“现在,当用户单击按钮时,Android 系统会调用 Activity 的 selfDestruct(View) 方法。为了使其工作,该方法必须是公共的并接受 View作为它的唯一参数。”引用xml文件中的onClick参数时。如果不使用这个参数,而是使用java文件中的onClickListener方法,可以使用Location吗?
XML 文件
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/GPS"
android:id="@+id/vid_message_button"
android:onCLick="onLocationChanged" />
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
}
public void onLocationChanged(Location location) {
if (view.getId() == R.id.send_GPS_button) {
double lat = (double) (location.getLatitude());
double lng = (double) (location.getLongitude());
float accuracy = (float) (location.getAccuracy());
double alt = (double) (location.getAltitude());
double speed = (double) (location.getSpeed());
double heading = (double) (location.getBearing());
messageLogTextView.append("Latitude: " + String.valueOf(lat) + "\n" +
"Longitude: " + String.valueOf(longi) + "\n" +
"Accuracy: " + String.valueOf(accuracy) + "\n" +
"Altitude: " + String.valueOf(alt) + "\n" +
"Speed: " + String.valueOf(speed) + "\n" +
"Heading: " + String.valueOf(heading) + "\n");
}
}
public void onSendGPSButtonClick(View view) {
}
【问题讨论】:
-
是的,需要view参数。
-
我怎样才能在我的按钮点击中获得
location或者调用onLocationchanged方法来执行操作呢? -
只传递view参数,有一个if条件来验证这个id和你按钮的id一样,然后你可以添加上面的代码
标签: java android button methods location