2015-06-15 103 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(....);

相关问题