1
ユーザーの場所が変更されたときにテキストビューのテキストを設定しようとしています。 GPS部分のコードはすべて動作します。私はLog()を使ってテストしています。別のクラスからTextViewテキストを設定するには?
Logを使用する代わりに、メインレイアウトに同じ情報を表示したいのですが、LocationChangedイベントが別のクラスにあるため、レイアウトにアクセスできません。
public class mylocationlistener implements LocationListener
{
@Override
public void onLocationChanged(Location location)
{
if (location != null)
{
Log.v("kjdv", location.getLatitude() + ", " + location.getLongitude());
//I would like to set a textview here, but don't have access to the object
}
}
このクラスは、ここで作成されます:
public class gps extends ListActivity implements View.OnClickListener
{
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
SetupLocationListener();
}
public void SetupLocationListener()
{
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener(this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
それでは、どのように、私はonLocationChangedイベント内のテキストを設定することができmyLocationListenerクラスから?
ありがとうございます!
'LocationListener'クラスを' ListActivity'の 'inner'クラスにします。 – Squonk
それはオプションであることに気づいていませんでした。ありがとう。 – Kevin
Androidの「アクティビティ」は、主にUI表現に使用される「特殊ケース」クラスであり、直接インスタンス化することはできないため、これは一般的な問題です。 'listeners '(' BroadcastReceiver'クラスを含む)と 'AsyncTask'クラス(例えば、ネストされたクラス)として動作するクラスを宣言することは、事柄を大幅に単純化します。それは常に最善のアプローチではなく、あなたは他の方法でそれを行うことができますが、それはより複雑になります。 – Squonk