我对android很新,而且几乎是Java newb。
我有一个简单的应用程序,我正在构建以获得Android的开发环境 - 以及点击事件等等。
应用加载,我可以使用按钮处理程序更改文本字段中的文本。但是,当我导入位置类并尝试进行简单的GPS调用时,应用程序崩溃。
问题是,Eclipse中的一切看起来都很好(错误控制台) - 我在android模拟器(DevTools)中没有看到任何异常。我打开了logcat窗口,但是我没有在eclipse / code中做任何事情来发送logcat任何东西(我需要吗?)
有人可以看到这个有问题吗?是否有更好的方法进行故障排除?
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import android.location.*;
public class locationDisplay extends Activity {
private EditText text;
private Location GPSLocation;
double dblLat;
double dblong;
String strLat;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // bind the layout to the activity
text = (EditText) findViewById(R.id.EditText01);
text.setText("No button pressed");
}
// Handler for each button -- Button01 is when it crashes
public void myClickHandler(View view) {
switch (view.getId()) {
case R.id.Button01:
dblLat = GPSLocation.getLatitude();
strLat = Double.toString(dblLat);
text.setText(strLat);
break;
case R.id.Button02:
text.setText("Button 2 was clicked");
break;
case R.id.Button03:
text.setText("Button 3 was clicked");
break;
}
}
答案 0 :(得分:4)
您不需要编写任何内容来获取LogCat中的默认消息;程序崩溃时,未捕获的异常报告应自动出现。但是,有时LogCat和您的模拟器彼此断开连接,消息就会消失。只需关闭Eclipse和模拟器,重新启动它们,然后重新出现消息。判断链接是否已重新建立的简单方法是在启动仿真器期间。就像花哨字体中闪烁的“ANDROID”文字消失,将你带到锁屏一样,你应该在LogCat上看到大约一百行的文字闪烁。如果没有发生,那么LogCat就没有收到它的消息。
在Android中显示调试消息的方法是使用Log.d("some name for your log statements so you can filter the LogCat messages", "The actual debug statement here");
。您经常会发现人们在他们的应用程序中使用静态最终字符串LOG_TAG之类的东西,以便他们可以确保他们的日志始终具有相同的标记,因此,过滤器永远不会错过消息。
至于你的实际代码,Rpond是对的,你从未初始化过GPSLocation对象。
答案 1 :(得分:2)
您的GPSLocation对象为空。您需要访问LocationService才能获取当前位置。使用模拟器,您需要手动发送位置。
答案 2 :(得分:1)
有时LogCat'忘记'您已连接并运行设备/模拟器。看起来这种情况发生在您同时在线设备和模拟器然后断开其中一个之后。如果您从LogCat中得不到任何内容,请转到Window> Show View> Other> Devices,然后单击要记录的设备。