2010-12-20 10 views
13

otrzymuję następujący błąd:Konstruktor Intent (nowa View.OnClickListener() {}, Class <DrinksTwitter>) jest niezdefiniowane

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

W poniższym fragmencie kodu:

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

} 

Co robię źle z linii:

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

To jest straszne pytanie, ale odpowiedź była przydatna dla mnie :) Miałem ten sam błąd;) –

+4

zadaje pytanie newb, w czym problem ?! Pomóż mu .. i ty @AndroidNewb powinien zaakceptować odpowiedź teraz, w przeciwnym razie następnym razem ludzie będą ci zagrażać ... – Ewoks

Odpowiedz

33

Zmień

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

do

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

Wiem, myślałem, że nie odpowiadam. Ale po prostu zauważyłem ten błąd, gdy spojrzałem na niego. – Falmarri

+1

Gdzie Screen2 to nazwa twojej obecnej klasy. –

26

zaledwie kilku linii, aby wyjaśnić, dlaczego „to” nie działa w:

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

Intencją jest tworzony wewnątrz innej klasy, tutaj anonimowy wewnętrzna klasa OnClickListener. Zatem "to" nie odnosi się do instancji twojej Aktywności (lub Kontekstu) zgodnie z przeznaczeniem, ale do instancji twojej anonimowej klasy wewnętrznej OnClickListener.

Jak @Falmarri wspomina w swojej odpowiedzi, zamiast „to” trzeba użyć nazwy aktywny następnie „.To”, aby wskazać prawym przykład:

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

+0

dziękuję, zastanawiałem się jaka była różnica z innym przykładem, którego próbowałem i dlaczego użyłem tego, a drugiego nie mogłem – Willyfrog

4

zmian

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

do

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

pracował dla mnie.

Powiązane problemy