2012-03-14 8 views
0

編集:私が回答を受け取っているうちに、何が間違っているのか、解決策が解決したのか分かりません。私はまだ、私はエラー受け付けております...暴くためAndroid - requestLocationUpdatesにより識別子が予想されるエラーが発生する

を探しています:識別子が期待されるところ「(」にポイントをライン上

error: (identifier) expected 

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 

[注:私は実際にこれらのエラーの4つを指します "("、 "0"、 "0"、および ")"]

I私は文法にこだわるといつもこのエラーが出ますが、今回はそれを見つけることができません。私のコードは比較的短いので、私はそれをやりますが、上の違反行をコメントアウトすると、コードは完全にうまく動作することをご存知でしょうか。

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.view.View.*; 
import android.view.View; 
import android.content.Context; 
import java.lang.CharSequence; 
import android.widget.Toast; 
import android.location.*; 


public class Entrance extends Activity 
{ 

/** Called when the activity is first created. */ 
@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button bGPS = (Button)findViewById(R.id.button_gps); 
     bGPS.setOnClickListener(bGPSListener); 
    } 

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

LocationListener locationListener = new LocationListener() 
{ 
    public void onLocationChanged(Location location) 
    { 
     Context context = getApplicationContext(); 
     CharSequence text = "Location found."; 
     int duration = Toast.LENGTH_SHORT; 

     Toast toast = Toast.makeText(context, text, duration); 
     toast.show(); 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 

    public void onProviderEnabled(String provider) {} 

    public void onProviderDisabled(String provider) {} 
}; 

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 

private OnClickListener bGPSListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     Context context = getApplicationContext(); 
     CharSequence text = "Hello toast!"; 
     int duration = Toast.LENGTH_SHORT; 

     Toast toast = Toast.makeText(context, text, duration); 
     toast.show(); 
    } 
}; 
} 

答えて

1

あなただけの任意のあったクラス内のメソッドをenvoke少なくともそれがコード行がクラスのどのメソッドの「外」である。この

{ 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
} 
+0

それがうまくいった!しかし、なぜ?それはEntranceクラスにあります。実行しないでください。それを隔離するのは何ですか? – sdasdadas

+0

それを中括弧で囲むだけでは役に立ちません。変数宣言以外のすべてのJavaコードは、メソッドまたは 'static'ブロック内にある必要があります。 – zapl

+0

zapl:私はそれが動作するとは思わなかったが、コンパイルは... – sdasdadas

2

のような別々のセクションで置くことができません。その戻り値をメンバ変数に代入して、その行に置くことができますが、それはプログラミングで「悪い形」とみなされます。

クラスを呼び出すメソッドに呼び出しを移動します。

関連する問題