Как начать вторую активность в 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 ошибка может быть назвав его от какой-то внутренний класс.