2014-12-30 4 views
12

Ну, я пытаюсь создать намерение на «login.java» код является:Ошибка при помощи onClickListener (Intent)

Button btEntrar = (Button) findViewById(R.id.btnSingIn); 
    btEntrar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i; 
      i = new Intent(this, MainActivity.class); 
      startActivity(i); 


     } 
    }); 

Но он говорит, что я не могу перейти к другой деятельности говоря это:

Error:(24, 21) error: no suitable constructor found for Intent(,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; cannot be converted to Context)

и ...

Error:Execution failed for task ':app:compileDebugJava'. Compilation failed; see the compiler error output for details.

+4

Изменение i = нового намерения (YourActivityName.this, MainActivity.class); –

+1

@sufiyan Ваш ответ работал отлично, как и все остальное. –

ответ

27

всего несколько строк, чтобы объяснить причину, почему this не работает:

i = new Intent(this, MainActivity.class) 

Умысел создан внутри другого класса, здесь анонимный внутренний класс OnClickListener. Таким образом, this не ссылается на экземпляр вашей деятельности (или контекста), как предполагалось, но экземпляр вашего анонимного внутреннего класса OnClickListener.

Таким образом, вы должны указать правильный контекст своего класса.

i = new Intent(YourClassName.this, MainActivity.class) 
+0

спасибо! .. Sufiyan –

+1

Другой вариант: i = новое намерение (getApplicationContext(), MainActivity.class); – leoneboaventura

2

обновленный код в вашей деятельности

Button btEntrar = (Button) findViewById(R.id.btnSingIn); 
btEntrar.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent i; 
     i = new Intent(login.this, MainActivity.class); 
     startActivity(i); 


    } 
}); 
6

использование если вы хотите, чтобы отправить его из login.java в mainactivity.class использования

Intent intent=new Intent(login.this,Mainactivity.class); 
startActivity(intent); 
-1

попробуйте использовать

Intent i = new Intent(login.this, mainActivity.class); 

надеюсь, что это помогает

-1

Вы добавили manifest.xml или попробуйте этот код?
Intent i = new Intent(login.this,mainActivity.class);

Смежные вопросы