2016-11-29 4 views
0

Перед тем, как сделать downvote: у меня есть googled это в течение часа + сейчас и до сих пор не могу понять, почему это не работает. Я следую the official docs.ActivityNotFoundException при открытии другого действия с помощью Intent

Я хочу открыть другое мероприятие из моей основной деятельности с намерением. Это мой основной класс активности (MainActivity.java):

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LinearLayout l = new LinearLayout(this); 
     Button b = new Button(this); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent goToActivity2 = new Intent(MainActivity.this, Activity2.class); 
       MainActivity.this.startActivity(goToActivity2); 
      } 
     }); 
     l.addView(b); 

     this.setContentView(l); 
    } 
} 

И это Activity2.java:

public class Activity2 extends Activity { 

} 

Если я запустить приложение я буду видеть основную деятельность с серой кнопки. Если я нажимаю на кнопку, я получаю Исключение:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.testing.kaarelp.androidtest2/com.testing.kaarelp.androidtest2.Activity2}; have you declared this activity in your AndroidManifest.xml? 

Почему я получаю исключение? Что здесь не так?

------------- edit1 ---------------

хорошо я объявил другую активность в манифесте, как это:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.testing.kaarelp.androidtest2"> 

    <application> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".Activity2" /> 
    </application> 

</manifest> 

... и приложение работает прямо сейчас! Тем не менее, я смотрю на другой пример рабочего кода прямо сейчас, у которого есть несколько Activity-s, которые не объявлены в манифесте, и он все еще работает. Что происходит?!

------------- edit2 ---------------

Ааа я понял это. Пример кода я смотрел на содержащемся множественный Fragment -s, не Activity -s

+0

Сообщение от исключения; «Вы объявили эту активность в своем AndroidManifest.xml?» – Bryan

+0

Я читал это. Я знаю, что вам не нужно объявлять неосновные действия в манифесте – gibs

+1

Да. Каждый из них. – Bryan

ответ

3

Вы должны объявить Activity в вашем AndroidManifest.xml файле:

<activity android:name=".Activity2"/> 
Смежные вопросы