2012-09-06 56 views
2

我不斷收到在Eclipse以下錯誤:類型不能使靜態參考從類型查看非靜態方法setVisibility(INT)

類型不能使靜態參考非靜態方法setVisibility(INT)從類型查看

我的代碼是:

package com.example.testing; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

public void onLoveButtonClicked(View view) { 
    TextView haikuTextView = (TextView) findViewById(R.id.haikuTextView); 
    TextView.setVisibility(View.VISIBLE); //error here 
} 
} 

我只是在java的初學者,所以我不知道是什麼導致了這個問題。我搜索了這個錯誤,但我沒有得到任何幫助我的東西。

回答

0

您需要使用:

haikuTextView.setVisibility(View.VISIBLE); 

TextView是類和haikuTextView是你的變量。你不能改變整個班級的可見度。但是你可以改變變量的可見性。


當你寫道:

<TextView 
    android:id="@+id/haikuTextView" 
    ... /> 

您創建一個實例TextView。您可以創建TextView類的很多實例,但是當您想在一個實例中更改某個特定的某個功能時,您必須指定要更改哪個TextView

當你寫TextView.setVisibility()你試圖改變TextView。現在TextView類沒有方法setVisibility()更改每TextView,但它確實有setVisibilty()更改一個實例。

所以
當您嘗試訪問每TextViewTextView.setVisibility()這是一種「靜態參考」,但就像我說的,有沒有方法來調用setVisibility()TextView

如果您使用haikuTextView.setVisibilty()來更改一個實例的可見性,這將工作,因爲這是「非靜態方法」存在。

0

爲了擴大Sam的回答:

TextView是一個類;它也是View類的一個子類。當你引用一個類的靜態成員時,你可以使用「classname.method(...)」或「classname.field」;當你說「TextView.setVisibility」時,你正在對「視圖」類中的方法「setVisibility」做一個「靜態引用」,它由TextView類繼承。因此,錯誤消息:無法對View類型的非靜態方法setVisibility(int)進行靜態引用。因爲setVisibility方法不是一個靜態方法;這是一個普通的方法。

關於該類的特定實例,必須參考普通方法。由於haikuTextView是TextView的一個實例,你可以這樣說:

haikuTextView.setVisibility(View.VISIBLE); 

這是明確的嗎?

+0

的是感謝:)我是繼一本書,這本書有TextView的。我認爲這是一個錯字。謝謝你們兩位! :) – Howli

0

它應該是:

textView.setVisibility(View.VISIBLE);//A small t instead of a capital T. 

祝您好運

相關問題