При запуске намерения не удается найти активность - PullRequest
0 голосов
/ 02 июля 2010

В моей программе есть список вкладок, каждая из которых содержит список людей. Нажатие на человека должно отредактировать его детали, но вместо этого щелчок на человеке вызывает исключение ActivityNotFoundException Мой код, с которого начинается редактирование:

Intent intent = new Intent("my.package.EDIT");                // Person is both
intent.putExtra("my.package.PERSON", (Parcelable) myPerson);  // Parcelable and
GroupArrayAdapter.this.getContext().startActivity(intent);    // Serializable

Соответствующая часть AndroidManifest.xml:

<activity android:name="EditActivity">
  <intent-filter>
    <action android:name="my.package.EDIT" />
  </intent-filter>
</activity>

Что происходит?

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Есть два способа начать действие, явно или неявно.Явно означает, что вы используете имя класса напрямую;обычно, если вы вызываете Activity, которая находится внутри вашего собственного приложения, вы хотите использовать явный метод, потому что он намного проще:

Intent intent = new Intent(context, EditActivity.class);
context.startActivity(intent);

Однако, если вы действительно хотите использовать неявную фильтрациютогда ваш фильтр намерений чего-то не хватает.Каждый фильтр неявных намерений требует категории android.intent.category.DEFAULT (с некоторыми исключениями).Попробуйте это и посмотрите, работает ли оно:

<activity android:name="EditActivity">
  <intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <action android:name="my.package.EDIT" />
  </intent-filter>
</activity>

Рекомендуемое чтение: Фильтры намерений .

0 голосов
/ 02 июля 2010

Когда вы создаете экземпляр своего Адаптера, передайте контекст из вызывающего действия.Затем в вашем адаптере используйте context.startActivity (...);

...