【问题标题】:How to call a Location method from a button click in Java Android?如何从 Java Android 中的按钮单击调用 Location 方法?
【发布时间】: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


【解决方案1】:

假设您已经为 Button 的 xml 文件的 android:onclick 属性提到了 onLocationChanged,那么在您的活动类中,具有签名为 onLocationChanged(View view) 的方法。

里面,这个方法,你可以有

if (view.getId() == R.id.yourButtonName) {

//为位置添加上面的代码并将位置设置为您的文本视图

}

【讨论】:

  • 你能看看我的编辑,告诉我你在说什么吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多