我有一个Android项目的2个班级。 第一个类是Activity,第二个类只是一个实现接口的OnClickListener。
如果我在手机上运行项目,我总是会遇到运行时错误。 我也收到了消息:
指定的活动不存在!获得启动器活动。
这是我的两个班级
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 :(得分:1)
在致电findViewById()
之后, {em>}之后才能致电setContentView()
。请搬家:
Button buttonSend= (Button) findViewById(R.id.buttonSend);
之后:
setContentView(R.layout.activity_send);
之前:
buttonSend.setOnClickListener(new ButtonListener());
此外,将来,请使用LogCat(例如,在Eclipse中的DDMS透视图中)检查与崩溃关联的Java堆栈跟踪。你会被告知你的NullPointerException
,这可能有助于你解决问题。
答案 1 :(得分: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());
}
在致电View
Button
之前,您无法拨打setContentView()
Layout
Layout
并且您还没有充气在致电setContentViewe()
之前,您需要Logcat
。
如果这些问题无法解决您的问题,请发布Activity
修改强>
除非我错过了,否则您需要在清单中包含所有<activity
android:name="your.package.name.SendActivity"
// activity attributes such as config changes, lable, etc...
</activity>
个。类似的东西:
{{1}}
<强> logcat的强>
Logcat输出可以是确定崩溃的最重要部分之一。它列出了错误的内容以及出现问题的活动的行号。如果使用Eclipse,
窗口 - &gt;显示视图 - &gt;其他 - &gt; Android - &gt; Logcat
如果使用编码括号复制/粘贴Logcat,则可以更轻松地获得帮助。您还可以为日志设置过滤器,这样您就不会收到每条消息,而且更易于管理。例如,我有一个过滤器:Filter Name:Runtime,Log Tag:AndroidRuntime,Log Level:error。这只给出了运行时错误/崩溃的错误消息。这些过滤器位于logcat视图的左侧。希望这有帮助