Как начать вторую активность в android? получаю ошибку

у меня есть два файла java. В первом у меня есть моя деятельность, которая начинается, когда приложение запускается. Второй называется "AuswahlActivity".java "и xml-файл" auswahl.XML." У меня есть этот код в AuswahlActivity.java:

 public class AuswahlActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.auswahl);
        //Your code here
    }
}

Теперь я хочу начать деятельность следующим образом:

Intent myIntent = new Intent(this, AuswahlActivity.class);
this.startActivity(myIntent);

но я получаю сообщение об ошибке The constructor Intent(new View.OnClickListener(){}, Class<AuswahlActivity>) is undefined

как мне заставить это работать?

5 ответов


Intent myIntent = new Intent(this, AuswahlActivity.class);    
this.startActivity(myIntent); 

эта часть вашего кода возможна внутри OnClickListener, просто использовать

Intent myIntent = new Intent(YouCurrentActivity.this, AuswahlActivity.class);
YouCurrentActivity.this.startActivity(myIntent); 

причина в том, что в анонимном классе (ваш OnClickListener) this относится к Onclicklistener, а не к активности...Первый параметр для намерения-это контекст (который должен быть активностью), следовательно, ошибка.


Я предполагаю, что вы пытаетесь начать новую деятельность внутри OnClickListener. Вот почему это относится к OnClickListener на не к активности. И поэтому соответствующий конструктор не может быть найден.

поэтому вы должны использовать

Intent myIntent = new Intent(TheCurrentActivity.this, AuswahlActivity.class);

вы также написали активность в файл манифеста?


Я предполагаю, что строка:

Intent myIntent = new Intent(this, AuswahlActivity.class);

происходит в OnClickListener, который является анонимным внутренним классом вашей основной деятельности. Просто приставка this С именем класса действия.


использовать его таким образом

Intent myIntent = new Intent(CallerActivity.this, AuswahlActivity.class);
CallerActivity.this.startActivity(myIntent);

здесь CallerActivity - это имя вашего первого действия. Андроид устраивает, что becaise ошибка может быть назвав его от какой-то внутренний класс.