2010-12-30 13 views
2

私はアンドロイドアプリを構築していますが、何か問題を引き起こしていないという警告が表示されています。アプリはwebviewを使用します。静的フィールドview.GONEは静的な方法でアクセスする必要がありますか?

警告の原因となっているコードがここにあります。

ImageView viewSplash; 
WebView mWebView; 
@Override 
public void onCreate(Bundle icicle) { 

    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    viewSplash = (ImageView) findViewById(R.id.splash); 
    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setGeolocationEnabled(true); 
    mWebView.loadUrl("http://www.google.com"); 
    mWebView.setWebViewClient(new WebViewtest(){ 
     @Override 
     public void onPageFinished(WebView View, String url) 
     { 
      viewSplash.setVisibility(View.GONE); 

       } 
    }); 
} 

これは誤りである:

静磁場View.GONEが静的方法でアクセスされなければなりません。

+0

エラー・メッセージの意味については、http://download.oracle.com/javase/tutorial/java/javaOO/classvars.htmlを参照してください。 「 instanceName.methodName(args)のようなオブジェクト参照を使って静的メソッドを参照することもできますが、クラスメソッドであることが明確ではないため、これは推奨しません。その場合、静的フィールドではなく静的メソッドについて話していますが、同じ考えですが、同じ理由で落胆します。 – MatrixFrog

答えて

9

まあ、私はかもしれない一つの問題を見ることができますが関連性がある。引数名として大文字のViewがあります(public void onPageFinished(WebView -> View <-, String url)を参照)。これを非資本化する。

編集:問題は、引数名が間違った大文字になっていて、クラスアクセスにインスタンス変数アクセスをマスクしているため、エラーが発生しました。より良い解決策は、大文字小文字を整理することです。

+0

この変更を行ったときに、「ビューを変数に解決できません」というエラーが表示されました。 –

+0

ビューを正しくインポートしなかったためです。そのように完全なクラスパス(修飾されたパッケージ名で)でアクセスする必要はありません。 Eclipseを使用して、私の変更を実装し、View.GONEのViewビットでCTRL-SPACEを押します。エントリを参照すると、インポートされます。または、インポートエラーが発生したときにCTRL-Oを押して、インポートする正しいパッケージ(android.view.View)を選択します。または、単にandroid.view.Viewを押してください。ファイルの先頭に。 –

+0

ctrl-SHIFT-Oではありませんか? – MatrixFrog

2

okがちょうどこれを投稿した後、私は...

を警告を修正私はこの変更:これに

viewSplash.setVisibility(View.GONE); 

viewSplash.setVisibility(android.view.View.GONE); 
+0

これで問題が解決した場合、 'View'は' android.view.View'クラス以外のものとして定義されている可能性があります。あなたのコードを見て、あなたが間違って変数 'View'の名前を付けたかどうか確認してください。 Javaでは、クラス名は大文字で始まり、変数名は小文字で始まる必要があります。 – MatrixFrog

+0

引数に「WebView View」と表示されています。それを 'WebView view'に変更すると、完全修飾名で' View'クラスを参照する必要はありません。 – MatrixFrog

1

定数View.GONEまたは(私の場合は)Context.NOTIFICATION_SERVICEは、Contextクラス内の定数であり、ローカルのContextまたはViewを通じてアクセスされません。ですから、View.goneの代わりにsomethingorother.GONEを参照するのがエラーです。

関連する問題