2011-01-14 3 views
3

У меня есть основное занятие. Из этого я вызываю 2 других вспомогательных действия, называемых FacebookLogin и Twitterlogin. Я использую следующий код в AndroidManufest.xml:андроидная множественная декларация активности в манифесте

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.examples.Kikin" android:versionCode="1" 
android:versionName="1.0"> 
<!-- THIS IS THE BEGINNING OF SHARING LINKS FROM THE BROWSER --> 
<application android:icon="@drawable/kikinlogo" 
    android:label="@string/app_name" android:debuggable="true"> 
    <activity android:name=".Kikin" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
     <intent-filter android:label="@string/app_name"> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="text/plain" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".FacebookLogin" android:label="@string/app_name"> 
     <intent-filter android:label="@string/app_name"> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     <!-- <data android:mimeType="image/png" /> --> 
     </intent-filter> 
    </activity> 
    <activity android:name=".TwitterLogin" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW"></action> 
      <category android:name="android.intent.category.DEFAULT"></category> 
      <category android:name="android.intent.category.BROWSABLE"></category> 
      <data android:scheme="yourapp" android:host="twitt"></data> 
     </intent-filter> 
    </activity> 

</application> 
<uses-sdk android:minSdkVersion="8" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

Am я делать это правильно? Должен ли я входить в функции FacebookLogin и TwitterLogin в основном Активность? Вышеупомянутые 2 класса находятся в пакете com.examples. . * одинаково везде, где он используется.

+0

Я расскажу вам, что я попробовал. Я попытался вложить 2 действия в основной вид деятельности. Я пробовал, как сказано выше. Я получаю исключение во время выполнения в Logcat: объявили ли вы эту активность в AndroidManifest.xml? – Brahadeesh

+0

Используется ли тот же самый ярлык для трех разных действий? Я изменил его и попытался. По-прежнему получается такая же ошибка. – Brahadeesh

+0

Можете ли вы разместить раздел , пожалуйста? – WorkerThread

ответ

1

Нет такой вещи, как «субактивность». Просто потому, что вы называете одно действие другим, это не значит, что это «субактивность».

Вы не можете вставлять теги активности в манифест, и вы, вероятно, получите ошибку компиляции, если попытаетесь.

+0

О, хорошо. Я сказал субактивность, потому что я называю этих двух из первого. Я сожалею о своей неправильной семантике. В чем проблема и почему она не работает? – Brahadeesh

+0

Как я должен знать, в чем проблема? – Falmarri

+0

Я спрашиваю о синтаксисе файла, который я написал выше. Правильно это или нет, это то, о чем я прошу. – Brahadeesh

0

Показанное вами сообщение выглядело отлично.

Но если вы прокомментировали сообщение об ошибке «Вы объявили эту активность в AndroidManifest.xml?», Вам необходимо тщательно проверить имя пакета и класса Activity, которое вы пытаетесь запустить, и убедитесь, что оно соответствует <activity android:name> вы написали в манифесте.

Вся необходимая информация должна быть в сообщении об ошибке.

+0

имена одинаковы. Однако я включил классы Facebook.java и TwitterLogin.java в пакет com.examples. *****. Так должно быть имя классов *****. FacebookLogin ???? – Brahadeesh

+0

Согласно вашему комментарию, имена ** ** не совпадают. Вы только что сказали, что у вас есть «Facebook.java» (подразумевая, что полное имя класса «com.examples.Kikin.Facebook'), но ваш манифест относится к' .FacebookLogin'. Измените это на '.Facebook' (или переименуйте класс в' FacebookLogin'). –

+0

Извините. Я имел в виду FacebookLogin.java. – Brahadeesh

1

Этикетки для вашего FacebookLogin и TwitterLogin, по всей видимости, отсутствует в «@» - изменить их андроида: LABEL = «@ строку/APP_NAME»

+0

хорошо пункт. Я изменил это. Я все еще получаю такое же исключение во время выполнения в Logcat. – Brahadeesh

+0

Я предполагаю, что он также включает в себя закрытие тега? Отправьте копию своего исключения. –

+0

OK, чтение между строками, я думаю, у вас есть следующие классы: com.examples.FacebookLogin и com.examples.TwitterLogin и com.examples.Kikin - если это так, то измените атрибут пакета в корневом элементе mainfest, чтобы package = "com.examples" –

0

деклараций Не гнездятся деятельности, просто их все в качестве элементов в вашем прикладном элементе:

<manifest ... 
    <application ... 
    <activity ... 
    </activity> 
    <activity ... 
    </activity> 
    <activity ... 
    </activity> 
    </application> 
</manifest> 

Образец, который вы разместили здесь (отступ в сторону), выглядит отлично.

+0

Я изменил отступы. Теперь я не вложил в эту деятельность. Все еще получая вышеупомянутую ошибку. любые идеи? – Brahadeesh

+0

Это звучит глупо, но верно ли название деятельности? android: имя относительно пакета, объявленного в атрибуте package объекта манифеста, правильно ли заполнено полное имя вашей деятельности? – jjb

+0

Все три класса находятся в одном пакете. Таким образом, они должны быть такими, какими они написаны выше, только я предполагаю. – Brahadeesh

0

Возможно, вы уже протестировали его, но просто попробуйте объявить свои действия полным путем (хотя вы уже объявили его в теге пакета). Таким образом, вместо того, чтобы использовать

<activity android:name=".TwitterLogin" /> 

использование

<activity android:name="com.examples.Kikin.TwitterLogin" /> 

Иногда проблемы возникают из-за этого.

Я знаю, что это старая нить, но я m having the same problem and in my case specifying full package name doesn t help. Вы уже нашли решение? Мне очень интересно знать, как избежать этой ошибки.