【问题标题】:Print Long and Lat打印经纬度
【发布时间】:2012-01-04 01:28:14
【问题描述】:

在过去的两天里,我一直在尝试打印我的 lang 和 long 坐标,我已经砍掉并更改了代码以使其工作,现在有点混乱,不明白为什么它不会工作,我是 Android 开发的新手,同时查阅了一本书(开始 Android 开发),但它没有涉及这个主题,任何帮助将不胜感激。

它可以编译并且我没有收到任何错误,但是它不会打印到 main.xml 中定义的应用程序中的 EditText 框。

这是我的 Java 文件代码:

       package com.emergency;

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Context;
import android.location.LocationManager;
import android.location.Criteria;

        public class EmergencyLocation extends Activity implements LocationListener {
            private TextView latitudeField;
            private TextView longitudeField;
            private LocationManager locationManager;
            private String provider;

            /** Called when the activity is first created. **/
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                latitudeField = (TextView) findViewById(R.id.long_lat1);
                longitudeField = (TextView) findViewById(R.id.long_lat2);

                // Get the location manager
                locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                // Define the criteria how to select the location provider -> use
                // default
                Criteria criteria = new Criteria();
                provider = locationManager.getBestProvider(criteria, false);
                locationManager.requestLocationUpdates(provider, 0, 0, this);
                Location location = locationManager.getLastKnownLocation(provider);
                onLocationChanged(location);
            }

            @Override
            protected void onDestroy() {
                super.onDestroy();
                locationManager.removeUpdates(this);
            }

            @Override
            public void onLocationChanged(Location location) {
               if (location != null) {
                   System.out.println("Provider " + provider + " has been selected.");
                   int lat = (int) (location.getLatitude());
                   int lng = (int) (location.getLongitude());
                   latitudeField.setText(String.valueOf(lat));
                   longitudeField.setText(String.valueOf(lng));
                   /*Toast.makeText(EmergencyLocation.this, 
                           "Longitude " + longitudeField + "Latitude " + latitudeField, Toast.LENGTH_LONG).show();*/



                   //getting longitude to display in an EditText box  
                   /*EditText lngtude = (EditText) findViewById(R.id.longitudeField);
                     lngtude.setText(String.valueOf(lng));

                   EditText lattude = (EditText) findViewById(R.id.latitudeField);   
                     lattude.setText(String.valueOf(lat)); */

                   EditText lngtude = (EditText) findViewById(R.id.longitudeField);
                   lngtude.setText(String.valueOf(lng), TextView.BufferType.EDITABLE);

                   EditText lattude = (EditText) findViewById(R.id.latitudeField);   
                   lattude.setText(String.valueOf(lat), TextView.BufferType.EDITABLE);



               } else {
                   latitudeField.setText("Provider not available");
                   longitudeField.setText("Provider not available");
               }
            }

            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onStatusChanged(String provider, int status,
                    Bundle extras) {
                // TODO Auto-generated method stub

            }


            /* @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main);

                    Button simpleBtn = (Button) findViewById(R.id.location);
                    simpleBtn.setOnClickListener(new View.OnClickListener() {*/


                 }
                ;

【问题讨论】:

  • 什么意思,没用?你没有得到预期值(或)你得到任何错误?
  • 它不会打印到 main.xml 中定义的 EditText 框。没有错误,它编译。
  • 你有没有调试过???使用 Log.d(...) 写入日志,而不是 System.out.println。
  • 调试我被告知当您在 Eclipse 中按 F11 时,它会在启动模拟器之前完成。字面意思是“Log.d(”prov etc)”而不是“System.out.println”?

标签: android latitude-longitude android-edittext toast


【解决方案1】:

我不相信你正确地使用了EditText.setText。另请参阅this 帖子。

EditText lngtude = (EditText) findViewById(R.id.longitudeField);
lngtude.setText(String.valueOf(lng), TextView.BufferType.EDITABLE);

EditText lattude = (EditText) findViewById(R.id.latitudeField);   
lattude.setText(String.valueOf(lat), TextView.BufferType.EDITABLE);

【讨论】:

  • 谢谢,但我改变了两个部分(上面),但它仍然不会打印到 EditText 框。
  • 我不明白您所说的“它仍然不会打印出 EditText 框”是什么意思。你的纬度/经度值是非空的吗? (比如你能把它们打印到 logcat 吗?)你的 EditText 框是否显示在 UI 上? (大概是空白)
  • 是的,EditText 框是空白的,我不否认我可能很愚蠢,但我真的迷路了,谢谢你的帮助。什么是 LogCat 以及如何查看它以进行检查?
  • @UserSmurph 让我们从头开始。您的 latitudelongitude 值是否正确?
  • 我没有在 EditText 框中显示任何值,即使从 DDMS 发送 long/lat 也是如此。
【解决方案2】:

您不应从代码中调用 onLocationChanged()。该方法在位置实际更改时运行。在模拟器上,您必须通过从 DDMS 角度发送坐标或在 telnet 会话中使用 geo fix 命令来模拟位置变化。

【讨论】:

  • 哦,以前没听说过这个!它也没有打印“无服务”,它仍然是同一个问题吗?有没有办法从当前位置调用以进行仿真?如果没有,我将如何使用 DDMS?
  • 用鼠标单击窗口、打开透视图、DDMS。您可能需要执行 Window、Open Perspective、Other、DDMS。在 DDMS 透视图中应该有一个“模拟器控制”选项卡,在该选项卡的底部有一个位置控制区域,您可以在其中输入纬度和经度,然后将其发送到模拟器
  • 好的,我做了所有这些,但在 EditText 框中仍然没有出现,有什么想法吗?
  • 在onLocationChanged()上打断点并启动调试器,或者使用Logcat
  • 调试器显然一直在运行,不确定这是否属实,但是当我将鼠标悬停在它上面时,它就是这么说的。什么是“断点”?
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多