Навигация по активности Android - PullRequest
4 голосов
/ 29 ноября 2010

Я очень плохо знаком с разработкой для Android и работаю над приложением, в котором у меня есть 4 действия.Каждое действие должно быть в состоянии перейти к любому другому 3. Поэтому я создал 4 кнопки в верхней части каждого действия, которые позволяют это.Код XML выглядит следующим образом:

<Button ... android:onClick="loadProfileLayout"/>  
<Button ... android:onClick="loadRulesLayout"/>  
<Button ... android:onClick="loadSettingsLayout"/>  
<Button ... android:onClick="loadHelpLayout"/>

манифест имеет тег активности для каждого:

    <activity android:name=".Profiler" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="Rules"></activity>
    <activity android:name="Settings"></activity>
    <activity android:name="Help"></activity>

И эти функции называются:

public void loadProfileLayout()        { startActivity(new Intent(this, Profiler.class)); }
public void loadRulesLayout(View v)    { startActivity(new Intent(this, Rules.class)); }
public void loadSettingsLayout(View v) { startActivity(new Intent(this, Settings.class)); }
public void loadHelpLayout(View v)   { startActivity(new Intent(this, Help.class)); }

Так что изначально это работает.Из основного действия «Профиль» я могу перейти к любому другому 3. А из других 3 я могу перейти куда угодно, но не к основному.При нажатии основной кнопки активности приложение вылетает.Я пытаюсь отладить, но он даже не выполняет loadProfileLayout ().Eclipse открывает файл «View.class» с содержимым «Источник не найден».Если я нажимаю F8, чтобы продолжить отладку, он загружает «ZygoteInit $ MethodAndArgsCaller.run ()» ... ... снова «Источник не найден».Повторное нажатие клавиши F8 приведет к загрузке сообщения об ошибке в эмуляторе «Извините! Приложение неожиданно остановилось. Пожалуйста, попробуйте еще раз».

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

Спасибо,
Nate

1 Ответ

4 голосов
/ 29 ноября 2010

Я не уверен, что это была опечатка в вашем вопросе, но loadProfileLayout() также должен принять View в качестве единственного параметра:

public void loadProfileLayout(View v)

Редактировать : Параметр View - это View, вызвавший событие onClick (в вашем случае экземпляр Button).Я не смотрел на код, но я предполагаю, что View использует отражение, чтобы найти метод для вызова (в частности, тот, который принимает View в качестве аргумента), и, поскольку он не находит подходящий метод, он решает выброситьисключение.

...