2013-02-23 151 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