2012-01-03 9 views
0

私はアンドロイドに新しいです。私はテキストフィールド内の画面に経度と緯度の整数を出力するプログラムを作ろうとしています。は、アンドロイドのテキストフィールドには印刷できません

アイブ氏は2つのエディットテキストフィールドを持っている:

<EditText 
     android:id="@+id/longitudeField" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/latitudeField" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:inputType="text"/> 

私はEmergencyLocationというクラスを実行するJavaファイルを持って知っています。 このファイルで私は経度と緯度を設定し、テキストフィールドを編集してこれらを画面に出力しようとしますが、これを行うたびに何も表示されません。

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; 

      @Override 
      public void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main); 
       latitudeField = (TextView) findViewById(R.id.latitudeField); 
       //logitudeField = (TextView) findViewById(R.id.????); 

       locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

       Criteria criteria = new Criteria(); 
       provider = locationManager.getBestProvider(criteria, false); 
       locationManager.requestLocationUpdates(provider, 0, 0, this); 
       Location location = locationManager.getLastKnownLocation(provider); 
       onLocationChanged(location); 
      } 

      @Override 
      public 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)); 
       } 
       else 
       { 
        latitudeField.setText(String.valueOf("Provider not avaliable")); 
        //the same with long stuff 
       } 
      } 
      @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 

      } 
     } 

は私がAndroidにイム新しい前に言ったように、私はそれが欠けている何か非常に単純なIMだと思います。

+1

ロギングコードをさらに追加するには、アプリケーションの取得距離を判断する必要があります。また、私が経験する可能性のある問題を最小限に抑えるため、実例(developer.android.comサイトなど)を取ることをお勧めします。 – KevinDTimm

答えて

0

私はあなたのアプリをテストしました。それは働いており、場所は更新中です。 AndroidManifest.xmlにLOCATION-permisionsを指定するのを忘れているかもしれませんか?

また、ここで:

provider = locationManager.getBestProvider(criteria, false); 

プロバイダがnullの場合もあります。だから、

locationManager.requestLocationUpdates(provider, 0, 0, this); 

をやろうとしながら、この場合は、あなたが例外を受け取ります、あなたはrequestLocationUpdates()を呼び出す前に、「ヌル」のプロバイダを確認する必要があります。

また、経度に問題はありますか?

+0

このアプリをテストしたところ効果はありましたか?あなたはそれをテストするために何を使いましたか?私はAndroidの携帯電話を持っていないし、Eclipseはロング/ラットをプリントアウトしていないようだ。 – PurpleSmurph

+0

また、マニフェストではどのような権限を指定する必要がありますか? – PurpleSmurph

+0

私はSamsung GT I5800の携帯電話を使用していました。使用する正確な権限については、[link](http://developer.android.com/reference/android/Manifest.permission.html)を参照してください。私はこれをAndroidManifest.xmlに配置しました:** ** – Prizoff

0

getLatitudeが実際doubleを返す事前に

感謝。それを試しましたか?

+0

ええ、私はまだ何も来ないので、迷惑なので、私はそれを見ることができない単純なものでなければなりません。 – PurpleSmurph

+0

は他のメソッドをオーバーライドし、動作しているプロバイダを取得しているかどうかを確認します。 – Snicolas

+0

さらにログを渡してください。あなたはシステムを出すのですか? – Snicolas

関連する問題