构造函数Intent(new View.OnClickListener(){},Class <drinkstwitter>)未定义</drinkstwitter>

时间:2010-12-20 08:18:14

标签: android android-intent

我收到以下错误:

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); 

3 个答案:

答案 0 :(得分:33)

更改

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

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

答案 1 :(得分:26)

只需几行来解释为什么“这个”不起作用的原因:

  

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

意图是在另一个类中创建的,这里是一个匿名内部类OnClickListener。因此,“this”不会按预期引用Activity(或Context)的实例,而是引用匿名内部类OnClickListener的实例。

正如@Falmarri在他的回答而不是“this”中提到的,你需要使用你的活动名称,后跟“.this”来指向正确的实例:

  

最终意图i =新意图(Screen2.this,DrinksTwitter.class)

答案 2 :(得分:4)

更改

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

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

它对我有用。