2013-02-23 149 views
0

我有一個Android項目的2個類。 第一個類是Activity,第二個類只是一個實現接口的OnClickListener。Android應用程序運行時錯誤

如果我在手機上運行該項目,我總是得到一個運行時錯誤。 我也收到了消息:

指定的活動不存在!獲取啓動器的活動。

這裏是我的兩個班

SendActivity

package kops.sms; 

//import android.R; 
import android.app.Activity; 

import android.os.Bundle; 
import android.view.Menu; 
import android.widget.Button; 

public class SendActivity extends Activity { 


Button buttonSend= (Button) findViewById(R.id.buttonSend); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_send); 

    buttonSend.setOnClickListener(new ButtonListener()); 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.send, menu); 
    return true; 
} 




} 

和ButtonListener

package kops.sms; 

import android.view.View; 
import android.view.View.OnClickListener; 

public class ButtonListener implements OnClickListener { 

    @Override 
     public void onClick(View v) 
     { 

     } 


} 

我不知道什麼是錯的...

我期待着你的回覆! :)

+0

您的活動是否在'manifest.xnl'中聲明?另外,在調用'setContentView()'' – codeMagic 2013-02-23 18:22:01

+0

之前,你不能得到你的按鈕。你能發佈一個stacktrace嗎? – meh 2013-02-23 18:23:34

回答

1

您不能撥打findViewById()直到您撥打setContentView()。請移動:

Button buttonSend= (Button) findViewById(R.id.buttonSend); 

後:

setContentView(R.layout.activity_send); 

之前:

buttonSend.setOnClickListener(new ButtonListener()); 

此外,在未來,請使用logcat中(例如,在Eclipse的DDMS透視圖)中檢查與您的崩潰相關的Java堆棧跟蹤。你會被告知你的NullPointerException,這可能會幫助你解決你的問題。

+0

謝謝!但它仍然崩潰...... – Maximii77 2013-02-23 21:05:15

+0

@ Maximii77:引用自己,「另外,在將來,請使用LogCat(例如,在Eclipse中的DDMS透視圖中)來檢查與您的崩潰相關的Java堆棧跟蹤。 – CommonsWare 2013-02-24 01:33:37

+0

http://www.m-i-u.de/images-i41680bcuepn.jpg – Maximii77 2013-02-24 11:39:34

0

請確保您的清單中聲明瞭Activity。此外,改變你的onCreate()

public class SendActivity extends Activity { 


Button buttonSend; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_send); 
    buttonSend = (Button) findViewById(R.id.buttonSend); 
    buttonSend.setOnClickListener(new ButtonListener()); 
} 

不能調用之前,如ButtonView你叫setContentView(),因爲它在你的Layout存在,你有沒有誇大你的Layout直到調用setContentViewe()。 如果這些都不能解決您的問題,那麼請張貼Logcat

編輯

除非我錯過了它,你需要把所有的Activity S在您的清單。喜歡的東西:

<activity 
     android:name="your.package.name.SendActivity" 
     // activity attributes such as config changes, lable, etc... 
</activity> 

logcat的

logcat的輸出可以是最重要的部分之一,以確定崩潰。它列出了錯誤是什麼以及發生問題的行號。如果使用Eclipse,

窗口 - >顯示視圖 - >其他 - > Android的 - > logcat的

如果複製/使用編碼括號粘貼logcat的,這讓越來越多的幫助更輕鬆。您還可以爲日誌設置過濾器,這樣您就不會收到任何單個消息,而且它更易於管理。例如,我有一個篩選器:篩選器名稱:運行時,按日誌標記:AndroidRuntime,按日誌級別:錯誤。這給我只有運行時錯誤/崩潰的錯誤消息。這些過濾器位於logcat視圖的左側。希望這可以幫助

+0

謝謝!但它仍然崩潰.. – Maximii77 2013-02-23 21:04:05

+0

然後,你需要發佈logcat,所以我們知道是什麼導致崩潰 – codeMagic 2013-02-23 21:11:47

+0

這是我的清單摘錄! '<應用 機器人:allowBackup = 「真」 機器人:圖標= 「@繪製/ ic_launcher」 機器人:標籤= 「@串/ APP_NAME」 機器人:主題= 「@風格/ AppTheme」> <活動 機器人:名稱= 「kops.sms.SendActivity」 機器人:標籤= 「@串/ APP_NAME」> <意圖濾波器> <操作機器人:名稱= 「android.intent.action.MAIN」/> <類別android:name =「android.intent.category.LAUNCHER」/> ' – Maximii77 2013-02-23 21:12:20