2010-12-20 4 views
13

ich die folgende Störung erhalte:Der Konstruktor Intent (neu View.OnClickListener() {}, Klasse <DrinksTwitter>) ist nicht definiert

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

Im folgenden Code-Schnipsel:

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

} 

Was mache ich falsch mit der Zeile:

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

Das ist eine schreckliche Frage, aber die Antwort war nützlich für mich :) Ich hatte den gleichen Fehler;) –

+4

er fragt die newb Frage, was ist das Problem ?! Hilf ihm .. und du @AndroidNewb sollte jetzt antworten, sonst nächstes Mal Leute werden dir die gleiche Bedrohung .. – Ewoks

Antwort

33

ändern

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

zu

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

Ich weiß, ich dachte über nicht beantworten. Aber ich habe zufällig diesen Fehler entdeckt, als ich ihn angeschaut habe. – Falmarri

+1

Dabei ist Screen2 der Name Ihrer aktuellen Klasse. –

26

Nur ein paar Zeilen der Grund, warum „dieses“ arbeiten in nicht zu erklären:

ist

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

Die Absicht innerhalb einer anderen Klasse erstellt, hier eine anonyme innere Klasse OnClickListener. Daher bezieht sich "this" nicht auf die Instanz Ihrer Aktivität (oder ihres Kontexts) wie beabsichtigt, sondern auf die Instanz Ihrer anonymen inneren Klasse OnClickListener.

Wie @Falmarri in seiner Antwort erwähnt statt „das“ Sie müssen Ihre Aktivität Namen von „.Dieses“ gefolgt verwenden, um die richtigen Instanz zu verweisen:

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

+0

danke, ich fragte mich, was war der Unterschied mit einem anderen Beispiel, das ich versuchte und warum man dies und das andere nicht konnte – Willyfrog

4

Änderung

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

zu

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

es funktionierte für mich.

Verwandte Themen