2010-12-20 48 views
13

我得到以下错误:构造意图(新View.OnClickListener(){},类<DrinksTwitter>)是未定义

The constructor Intent(new View.OnClickListener(){}, 
         Class<DrinksTwitter>) is undefined 

在下面的代码片断:

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

    // Get the EditText and Button References 
    etUsername = (EditText)findViewById(R.id.username); 
    etPassword = (EditText)findViewById(R.id.password); 
    btnLogin = (Button)findViewById(R.id.login_button); 
    btnSignUp = (Button)findViewById(R.id.signup_button); 
    lblResult = (TextView)findViewById(R.id.result); 

    // Set Click Listener 
    btnLogin.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Check Login 
      String username = etUsername.getText().toString(); 
      String password = etPassword.getText().toString(); 


      if(username.equals("test") && password.equals("test")){ 
       final Intent i = new Intent(this, DrinksTwitter.class); //error on this line 
       startActivity(i); 
       // lblResult.setText("Login successful."); 
       } else { 
       lblResult.setText("Invalid username or password."); 
      } 
     } 
    }); 

    final Intent k = new Intent(Screen2.this, SignUp.class); 

    btnSignUp.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      startActivity(k); 
     } 
    }); 

} 

什么是我错了行做:

final Intent i = new Intent(this, DrinksTwitter.class); 
+0

这是一个可怕的问题,但答案对我有用:)我有同样的错误;) – 2011-04-11 16:37:41

+4

他问新问题,什么问题?帮助他.. 和你@AndroidNewb现在应该接受答案,否则下次人们会威胁你一样.. – Ewoks 2012-06-19 09:30:32

回答

33

变化

final Intent i = new Intent(this, DrinksTwitter.class) 

final Intent i = new Intent(Screen2.this, DrinksTwitter.class) 
+0

我知道,我想过不回答。但是当我看着它时,碰巧发现了这个错误。 – Falmarri 2010-12-20 08:52:00

+1

其中Screen2是您当前班级的名称。 – 2014-01-19 23:10:54

26

只需几行解释原因,“这个”不工作在:

final Intent i = new Intent(this, DrinksTwitter.class)

的意图的其他类,这里的匿名内部内部创建类OnClickListener。因此,“this”并没有将您的Activity(或Context)的实例视为预期,而是将您的匿名内部类OnClickListener的实例引用。

由于@Falmarri在他的答案,而不是“本”,你需要使用你的活动名称后面加上“这种”指向正确的实例中提到:

final Intent i = new Intent(Screen2.this, DrinksTwitter.class)

+0

谢谢,我想知道与我尝试过的其他一些示例有什么区别,以及为什么使用这个而另一个不能 – Willyfrog 2012-06-08 14:32:54

4

变化

final Intent i = new Intent(this, DrinksTwitter.class) 

final Intent i = new Intent(getApplicationContext(), DrinksTwitter.class); 

它为我工作。