0

我有 2 个用于 Android 项目的课程。第一个类是 Activity,第二个类只是实现接口的 OnClickListener。

如果我在手机上运行该项目,我总是会遇到运行时错误。我也收到了消息:

指定的活动不存在!获取启动器活动。

这是我的两节课

发送活动

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)
        {

        }


}

我不知道怎么了...

我期待着您的回复!:)

4

2 回答 2

1

打电话findViewById()才能打电话。请搬家:setContentView()

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

之后:

setContentView(R.layout.activity_send);

之前:

buttonSend.setOnClickListener(new ButtonListener());

此外,将来,请使用 LogCat(例如,在 Eclipse 的 DDMS 透视图中)检查与您的崩溃相关的 Java 堆栈跟踪。您会被告知您的NullPointerException,这可能会帮助您解决问题。

于 2013-02-23T18:23:44.037 回答
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诸如 a ,因为它存在于您的中,并且在调用之前您没有膨胀您的。如果这些不能解决您的问题,请发布ButtonsetContentView()LayoutLayoutsetContentViewe()Logcat

编辑

除非我错过了,否则您需要Activity在清单中包含所有 s。就像是:

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

日志猫

Logcat 输出可能是确定崩溃的最重要部分之一。它列出了错误是什么,以及发生问题的活动的行号。如果使用 Eclipse,

窗口-->显示视图-->其他-->Android-->Logcat

如果您使用编码括号复制/粘贴 Logcat,则可以更轻松地获得帮助。您还可以为日志设置过滤器,这样您就不会收到每条消息,而且更易于管理。例如,我有一个过滤器:过滤器名称:运行时,按日志标记:AndroidRuntime,按日志级别:错误。这只会给我运行时错误/崩溃的错误消息。这些过滤器位于 logcat 视图的左侧。希望这可以帮助

于 2013-02-23T18:25:09.683 回答