2015-06-15 166 views
-2

我想打電話給onClickListener()但有一個問題Android:使用onClickListener()時的靜態引用/非靜態方法;

Cannot make a static reference to the non-static method setOnClickListener(View.OnClickListener) from the type View 

我的相關代碼:

Intent intent = getIntent(); 
     final String editTextStr = intent.getExtras().getString("url"); 
     ImageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Uri uri = Uri.parse(putExtra(editTextStr)); 

       Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
      startActivity(intent); 
       } 

      }); 

請幫助我,請

+0

如果您在ImageView上調用setOnClickListener,有什麼用? –

+0

這將有助於查看相關的'import'語句,查看您所指的哪些類,或使用完整的類名。更好的是,鏈接到相關類的Android API文檔並引用相關定義將幫助人們流利地使用Java來快速找到並解釋爲什麼你得到這個編譯錯誤,而不是因爲他們需要投資他們的寶貴時間爲您搜索參考。 :-) – FooF

回答

0

ImageView的一類。通過調用該類的setOnClickListener方法,您正在對該類的該方法進行靜態引用。但是setOnClickListener方法沒有被定義爲靜態的。

您需要在該類的對象上設置單擊偵聽器。例如,

ImageView myImageView = (ImageView) findViewById(R.id.myImageView); 
myImageView.setOnClickListener(...); 
0

您必須在您的活動的特定實例上調用onClickListener。

ImageView image = (ImageView) findViewById(R.id.yourref); 
image.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Uri uri = Uri.parse(putExtra(editTextStr)); 

       Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
       startActivity(intent); 
      } 

     }); 
1

ImageView是一類。通過調用className上的setOnClickListener方法,您將調用靜態方法,但實際上它不是靜態方法。

final ImageView imageView = (ImageView)findViewById(R.id.<ID in you Layout XML file>); imageView.setOnClickListener(....);

相關問題