2012-01-03 1 views
0

지난 2 일 동안 내 lang과 long 좌표를 인쇄하려고했습니다. 문제가 생겼고, 왜 그런지 이해하지 못하고, 코드를 변경하여 코드를 변경했습니다. 작동하지 않을 것입니다. 안드로이드 개발에 초보자입니다. (안드로이드 개발 시작)하지만이 주제에 대해서는 다루지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.긴 길이와 위도를 인쇄하십시오.

컴파일되고 오류가 발생하지 않지만 main.xml에 정의 된 응용 프로그램의 EditText 상자에는 인쇄되지 않습니다.

 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() {*/ 


       } 
       ; 
+1

무슨 뜻입니까, 작동하지 않았습니까? 예상 값을 얻지 못 했습니까 (또는) 오류가 있습니까? – kosa

+0

main.xml의 정의 된 EditText 상자로 인쇄되지 않습니다. 오류가없고 컴파일됩니다. – PurpleSmurph

+0

디버깅을 한 적이 있습니까 ??? Log.d (...)를 사용하여 System.out.println이 아닌 로그에 기록하십시오. – muratgu

답변

0

내가 제대로 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); 
+0

감사합니다.하지만 두 부분을 변경했지만 (위의) EditText 상자에는 인쇄되지 않습니다. – PurpleSmurph

+0

"EditText 상자를 인쇄 할 수 없다"는 의미를 이해하지 못합니다 .Lat/Lon 값이 null이 아닌지 (logcat에 인쇄 할 수있는 것처럼) EditText 상자가 UI가 무엇입니까? (아마도 공백 임) –

+0

예, EditText 상자는 비어 있습니다. 나는 바보가 될 가능성이 있음을 부인할 생각은 없습니다. 그러나 정말로 분실했습니다. 도와 주셔서 감사합니다. LogCat은 무엇이며 어떻게 확인합니까? ? – PurpleSmurph

0

코드에서 onLocationChanged()를 호출하면 안됩니다. 이 메소드는 위치가 실제로 변경 될 때 실행됩니다. 에뮬레이터에서 DDMS 관점에서 좌표를 보내거나 텔넷 세션에서 geo fix 명령을 사용하여 위치 변경을 시뮬레이트해야합니다.

+0

아, 전에 들어 본 적이 없어! 그것은 "서비스가 없음"을 인쇄하지는 않지만 여전히 동일한 문제 일 수 있습니까? 에뮬레이션 목적으로 현재 위치에서 전화 할 수있는 방법이 있습니까? 그렇지 않은 경우 어떻게 DDMS를 사용합니까? – PurpleSmurph

+0

마우스로 Window, Open Perspective, DDMS를 클릭하십시오. 당신은 Window, Open Perspective, Other, DDMS를해야 할 수도 있습니다.DDMS 퍼스펙티브에는 'Emulator Control'탭이 있어야합니다. 그 탭의 하단에는 위도와 경도를 입력하고 에뮬레이터로 보낼 수있는 Location Control 영역이 있습니다. – NickT

+0

OK, 그 모든 것을했지만 아직도 EditText 상자에 어떤 아이디어도 나오지 않았습니까? – PurpleSmurph