Как начать вторую активность в 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
Как мне заставить это работать?
Ответы
Ответ 1
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, а не на активность... Первый параметр для Intent - это контекст (который должен быть активным), следовательно, ошибка.
Ответ 2
Я предполагаю, что вы пытаетесь запустить свою новую деятельность внутри OnClickListener. Вот почему это относится к OnClickListener не к активности. И поэтому невозможно найти соответствующий конструктор.
Поэтому вы должны использовать
Intent myIntent = new Intent(TheCurrentActivity.this, AuswahlActivity.class);
вместо
Ответ 3
Вы также записывали активность в файл манифеста ?
Ответ 4
Я предполагаю, что строка:
Intent myIntent = new Intent(this, AuswahlActivity.class);
происходит в OnClickListener, который является анонимным внутренним классом вашей основной деятельности. Просто префикс this
с именем класса активности.
Ответ 5
Используйте его таким образом
Intent myIntent = new Intent(CallerActivity.this, AuswahlActivity.class);
CallerActivity.this.startActivity(myIntent);
Где CallerActivity
- имя вашего первого действия. Android бросает эту ошибку, потому что вы можете ее вызывать из какого-то внутреннего класса.