2011-12-23 4 views
2

Я только начинаю развивать Android (как разработчик .Net)Намерение конструктор Синтаксис

Я после кода из книги, и начать новую «форму» (экран) они показывают этот код

Intent i = new Intent("net.learn2develop.ACTIVITY2"); 

определение класса это:

package net.learn2develop.Activities; 

//imports removed 

public class Activity2 extends Activity { 

Мой вопрос: я полагаю, что строка в конструкторе в Intent является имя_класса. Но почему это 'net.learn2develop', а не 'net.learn2develop.Activities' и почему имя класса все шапки?

ответ

5

Взгляните на документацию: Intent(String action).

Так что это фактически имя действия, а не имя класса. Они обычно выглядят очень похожими на неподготовленный глаз. Взгляните на AndroidManifest.xml и найдите строку net.learn2develop.ACTIVITY2. Вы должны найти что-то вроде:

<activity android:name=".Activity2" > 
     <intent-filter > 
      <action android:name="android.intent.action.ACTIVITY2" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
+0

Итак, имя объекта (android.intent.action.ACTIVITY2) задано в конструкторе, а имя Activity (.Activity2) - это имя класса? – Michel

+0

Должен ли я указывать имя пакета? – Michel

+0

Если вы используете «Действия», это не требуется. Вся идея «Намерения» поздняя привязка. Другими словами, вам не нужно знать, какой пакет будет обрабатывать ваш запрос. – inazaruk

2

Не нужно использовать название класса как шапки. Фактически используйте его именно так, как вы его объявили. Поскольку в android используется Java, язык и java - это язык, чувствительный к регистру.

Например, чтобы начать новый acivity:

Intent i=new Intnet("net.learn2develop.Activity2"); //assuming that your package name is net.learn2develop 
startActivity(i); 

или

Intent i=new Intnet(Activity1.this,Activity2.class) //assuming that your current class name is Actvity1 
startActivity(i); 

Наконец не забудьте объявить новую активность в файле манифеста.

Смежные вопросы