请尝试以下方法:
创建一个HelloWorld应用程序.
将一条Log语句添加到onCreate的末尾:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("HelloWorldActivity.onCreate()", "setContentView() completed");
}
在Log语句上放置一个断点.
在模拟器中运行应用程序并记下它的工作原理并逐步查看Eclipse的LogCat窗口中的Logged条目.
将HelloWorldActivity更改为从ListActivity而不是Activity扩展.
public class HelloWorldActivity extends ListActivity {
我的问题不是为什么会失败.我的问题是,您将如何调试此故障?我在Eclipse Debug窗格中看到的只是一个RuntimeException.我看到LogCat有一堆消息,但是它很庞大,我已经搜索了它,但找不到任何表明错误的地方或我的代码中发生异常的地方.我找不到在RuntimeException或堆栈跟踪中显示消息的方法,以了解哪行代码启动了异常.
我假设必须有更好的方法来使用这些工具来查找错误,但我是新手,似乎无法找到更好的调试方法,除了将我编码的所有内容包装在try/catch中.我原本希望在抛出异常时生成的LogCat中找到一条消息.我希望Debug窗口允许您检查异常的内容.我不是说这种技术不存在,我说我很难搞清楚如何调试和询问存在哪些技术以及如何使用它们?
所以,简单地说:
欢迎提出多项建议和讨论.:)
我会包含我的LogCat内容,但它太大了,这是不合理的.你应该能够轻松地自己重现这个,所以我把它遗漏了.LogCat中的某些东西可能对我有所帮助,但是因为它甚至运行一个小程序它是如此之大,我需要提示在搜索API调用抛出的异常时如何搜索以及如何解释它.我看到其他帖子说明LogCat中应该有什么东西,虽然可能是真的,但我自己找不到任何东西.如果您认为某些内容应该在LogCat中,请自行运行测试并将这些行复制到我应该找到的响应中.
谢谢.
========
截至目前的摘要技术列表如下:
入侵技术:1.将Toast放置在您希望看到您已执行的代码位置.2.将try/catch放在您认为可能抛出异常的代码中.3.注释掉代码并重新编译和重新测试.
非侵入性技术:1.使用调试器.断点,变量检查...... 2.猴子压力测试仪.3.下载Android源库.4.使用LogCat过滤器查看是否列出了"引起的".
不清楚是否可用:1.调试Android库的版本,其中包含其他日志记录,断言或其他附加帮助.2.能够通过Debug窗格或其他技术检查Eclipse中的Exception.3.一种定义更全局的try/catch异常处理程序的方法.4.能够通过Android库源代码进行调试.
不可用:1.一种非侵入性的方式来查看异常的内容或异常发生的位置.
boolean android.database.Cursor.moveToNext()文档说:
http://developer.android.com/reference/android/database/Cursor.html#moveToNext%28%29
将光标移动到下一行.
如果光标已经超过结果集中的最后一个条目,则此方法将返回false.
但是,我的书说要执行以下操作从游标中提取数据:
Cursor myCursor = myDatabase.query(...);
if (myCursor.moveToFirst()) {
do {
int value = myCursor.getInt(VALUE_COL);
// use value
} while (myCursor.moveToNext());
}
谁是对的?这两者都不可能是真的.如果你看不到矛盾,想象一下myCursor从查询中返回了1行.对getInt()的第一次调用将起作用,但随后moveToNext()将返回true,因为它不是"已经"超过结果集中的最后一个条目.所以现在光标将超过最后一个条目,第二次调用getInt()会做一些未定义的事情.
我怀疑文档是错误的,应该改为:
如果光标"已经在"结果集中的最后一个条目,则此方法将返回false.
在moveToNext()方法返回false之前,光标必须已经是PAST(而不是AT)的最后一个条目吗?
没有Snark请
我想创建一个正方形图像的网格,但是无法使图像按需要显示。我从GridView教程开始:
http://developer.android.com/resources/tutorials/views/hello-gridview.html
这似乎很接近我想要的。
我能看到的唯一区别是,我需要恰好18张图像,并且它们都必须为正方形。我将列数设置为3,然后加载18张图像,然后应在6行中。我希望图像完全填满每一行,并且不要留下任何多余的多余尺寸的间隙。在将图像下载到手机之前,我不知道它们的大小。希望它们一开始会接近正方形,但是我需要裁剪中心使其完全正方形,然后缩放它们以完全填充3列。我需要图像以保留其长宽比。
我似乎找不到使这项工作可用的设置或代码。图像重叠,有缝隙,无法正确缩放或其他错误。
当我的模拟器设置为480x800时,我得到的最接近的是通过如下更改GridView教程:
imageView.setLayoutParams(new GridView.LayoutParams(480/3,480/3));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(0,0,0,0);
imageView.setAdjustViewBounds(true);
====
<网格视图
xmlns:android =“ http://schemas.android.com/apk/res/android”
android:id =“ @ + id / gridview”
android:layout_width =“ fill_parent”
android:layout_height =“ fill_parent”
android:numColumns =“ 3”
android:stretchMode =“ columnWidth”
android:gravity =“ fill | clip_horizontal | clip_vertical”
/>
这几乎是正确的。我正在使用的方形测试图像缺少几个像素,非方形图像没有被裁剪,而是在内部用黑框保留下来以保持比率,并且硬编码的值很脆弱,无法在所有手机,方向或布局。我觉得很有趣,CENTER_CROP文档似乎声称它将通过扩展以适合图像来实现我想要的功能,但是似乎对CENTER_INSIDE而言。
我感觉很亲密,但从没有得到想要的东西。也许我应该使用GridView以外的其他工具?有什么建议么?
请不要贪吃。
谢谢。