Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I am getting the following error:

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

In the following code snippet:

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

}

What am I doing wrong with the line:

final Intent i = new Intent(this, DrinksTwitter.class); 
like image 873
AndroidNewb Avatar asked Dec 20 '10 08:12

AndroidNewb


2 Answers

Change

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

to

final Intent i = new Intent(Screen2.this, DrinksTwitter.class)
like image 135
Falmarri Avatar answered Sep 20 '22 07:09

Falmarri


Just a few lines to explain the reason why "this" does not work in:

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

The intent is created inside an other class, here an anonymous inner class OnClickListener. Thus "this" does not refer the instance of your Activity (or Context) as intended but the instance of your anonymous inner class OnClickListener.

As @Falmarri mentions in his answer instead of "this" you need to use your Activity name followed by ".this" to point to the right instance:

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

like image 28
JiBe aka Sucre-Gorge Avatar answered Sep 20 '22 07:09

JiBe aka Sucre-Gorge