Как начать вторую активность в Android?получать ошибку - PullRequest
10 голосов
/ 10 марта 2011

У меня есть два файла 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 ]

22 голосов
/ 10 марта 2011
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а не активность ... Первым параметром для Намерения является Контекст (который должен быть действием), отсюда и ошибка.

2 голосов
/ 10 марта 2011

Вы также записали действие в файл манифеста ?

2 голосов
/ 10 марта 2011

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

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

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

вместо

1 голос
/ 10 марта 2011

Используйте это следующим образом

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

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

1 голос
/ 10 марта 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...