2010-11-29 122 views
4

我對android開發非常陌生,我正在開發一個應用程序,其中有4項活動。每個活動都需要能夠導航到其他任何3個。所以我在每個活動的頂部創建了4個按鈕,允許這樣做。 XML代碼看起來是這樣的:Android活動導航

<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」文件,其內容基本上是「Source not found」。如果我按F8繼續調試,則會再次加載「ZygoteInit $ MethodAndArgsCaller.run()」...「Source not found」。再次按F8將在模擬器中加載錯誤消息「對不起!應用程序意外停止,請重試。」

同樣,我是Android的新手,我所知道的所有活動都是我在dev網站上閱讀的內容。我在這裏犯了一個根本性的錯誤,我不知道?

感謝,
內特

+1

我不確定這是否會給您帶來任何傷害,但您還需要更改標籤中的名稱。 (期間)。例如,應該是。 – SpencerElliott 2010-11-29 17:21:19

回答

4

我不知道這是否是你的問題中一個錯字,但loadProfileLayout()也需要採取View作爲其唯一的參數:

public void loadProfileLayout(View v) 

編輯 :View參數是導致onClick事件的視圖(在您的情況下,爲Button實例)。我沒有看過代碼,但我認爲View是使用反射來查找調用的方法(特別是將View作爲參數的方法),並且由於它沒有找到匹配的方法,所以它決定拋出一個例外。

+0

這是問題所在。你能提供關於這個論點的任何見解嗎?究竟傳遞了什麼?我將View v包含在其他版本中,因爲這是它在開發網站上的顯示方式。但我實際上並沒有在我的函數中使用v對象。它的目的是什麼以及爲什麼應用程序崩潰而沒有它? – linsek 2010-11-29 16:32:00