我在这里读了一些帖子,我开始为什么有些人这样做
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 500);
}
Run Code Online (Sandbox Code Playgroud)
代替
setPreferredSize(new Dimension(500, 500));
Run Code Online (Sandbox Code Playgroud)
不是第二个更好,因为它只创建一个Dimension对象,而第一个可能创建几个(即使它没有那么多浪费的内存)?还是我错了?有什么不同吗?
我在更新数据库时遇到了一些麻烦.
这是日志:
12-02 16:18:57.502: D/Data Update(21218): Start updating databases
12-02 16:18:57.502: D/Data Update(21218): update size: 5
12-02 16:18:57.502: D/Data Update(21218): updating table cemeteries
12-02 14:28:51.877: I/SqliteDatabaseCpp(18826): sqlite returned: error code = 1802, msg = statement aborts at 13: [INSERT OR REPLACE INTO cemeteries(id,name) VALUES (?,?)] , db=/data/data/de.l_one.app.shaufelv14/databases/poidatabase
12-02 14:28:51.877: E/SQLiteStatementCpp(18826): native_execute (step): errno = 2, error message = No such file or directory, handle = 0xdc0b70
12-02 14:28:51.877: I/SqliteDatabaseCpp(18826): sqlite returned: error code = 1, msg = statement aborts at …Run Code Online (Sandbox Code Playgroud) 这段代码:
public void foo() {
new Thread() {
@Override
public void run() {
ShaufelDatabaseHelper dbHelper = ShaufelDatabaseHelper.getInstance(parentActivity);
SQLiteDatabase connection = null;
Cursor queryData = null;
final String[] values = new String[8];
try{
connection = dbHelper.getReadableDatabase();
queryData = connection.rawQuery( // line 132
"SELECT name, firstname, section, row, gravenr, type, workorder, comment "+
"FROM orders, graves "+
"WHERE orders.id=? AND graves.id=orders.id"
, new String[] {orderID});
queryData.moveToFirst(); // line 138
// ...
} catch(Throwable t) {
// ...
}
}.start();
}
Run Code Online (Sandbox Code Playgroud)
给我这些例外:
10-29 …Run Code Online (Sandbox Code Playgroud) 我想通过使用现代OpenGL(使用VBO和着色器渲染)在LWJGL中渲染文本,但我不知道如何做到这一点.
我尝试将其设置为我的活动布局:
<?xml version="1.0" encoding="utf-8"?>
<include layout="@layout/map_activity_base" />
Run Code Online (Sandbox Code Playgroud)
如果我使用@layout/map_activity_base而不是包含它,它会起作用。我不这样做的原因是因为您不能在大屏幕布局中包含小屏幕布局的内容,但我需要@layout/map_activity_base不同布局中的内容。
我得到的错误是
E/AndroidRuntime(11383): FATAL EXCEPTION: main
E/AndroidRuntime(11383): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.l_one.app.achileo/de.l_one.app.achileo.Main}: android.view.InflateException: Binary XML file line #2: Error inflating class include
[...]
E/AndroidRuntime(11383): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class include
[...]
E/AndroidRuntime(11383): Caused by: java.lang.ClassNotFoundException: android.view.include in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/de.l_one.app.achileo-1.apk]
Run Code Online (Sandbox Code Playgroud)
所以似乎 android 认为<include />应该是 aView但只有当我在<include />没有任何环境的情况下使用时才会发生View
那么是否可以在<include />没有任何环境的情况下使用View,如果不是,实现我想要的最佳方法是什么?
顺便说一句:我不知道这是否重要,但这是图书馆项目的内容。
编辑:map_activity_base.xml
<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 对于遇到与我相同问题的人,我会在这里留下:
我试图建立一个OnItemLongClickListener为ExpandableListView和想知道的是点击哪个组.按照我在这里提出的许多问题(例如这个问题)的建议,我ExpandableListView.getPackedPositionGroup总是回来0.
这是我使用的代码:
@Override
public boolean onItemLongClick(AdapterView<?> list, View view, int position, long id) {
Log.d(D, "position: "+position);
Log.d(D, "id: "+position);
Log.d(D, "unpacked position: "+ExpandableListView.getPackedPositionGroup(position));
switch(ExpandableListView.getPackedPositionType(position)) {
case ExpandableListView.PACKED_POSITION_TYPE_CHILD:
Log.d(D, "position type: child");
break;
case ExpandableListView.PACKED_POSITION_TYPE_GROUP:
Log.d(D, "position type: group");
break;
case ExpandableListView.PACKED_POSITION_TYPE_NULL:
Log.d(D, "position type: null");
break;
default:
Log.wtf(D, "position type: "+ExpandableListView.getPackedPositionType(position));
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我发现,position和id总是具有相同(正确)的值.但是,类型始终被识别为组,并且解压缩位置始终为0.
那么代码有什么问题呢?
编辑:我知道浮点运算并不精确。算术甚至不是我的问题。添加给出了我预期的结果。8099.99975f没有。
所以我有这个小程序:
public class Test {
public static void main(String[] args) {
System.out.println(8099.99975f); // 8099.9995
System.out.println(8099.9995f + 0.00025f); // 8100.0
System.out.println(8100f == 8099.99975f); // false
System.out.println(8099.9995f + 0.00025f == 8099.99975f); // false
// I know comparing floats with == can be troublesome
// but here they really should be equal in every bit.
}
}
Run Code Online (Sandbox Code Playgroud)
我编写它是为了检查当编写为 IEEE 754 单精度浮点数时是否8099.99975四舍五入。8100令我惊讶的是,Java 将其转换为8099.9995浮点文字 ( 8099.99975f)。我再次检查了我的计算和 IEEE 标准,但没有发现任何错误。与 一样8100远,但最后一位应该使其成为正确的表示。8099.999758099.99958100 …
我正在尝试使用计算着色器写入 SSBO 并在 CPU 上读回数据。
计算着色器只是一个写入 24 个浮点的 1x1x1 玩具示例:
#version 450 core
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout (std430, binding = 0) buffer particles {
float Particle[];
};
void main() {
for (int i = 0; i < 24; ++i) {
Particle[i] = i + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我运行着色器并读取数据的方式:
val bufferFlags = GL_MAP_READ_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT
val bufferSize = 24 * 4
val bufferId = glCreateBuffers()
glNamedBufferStorage(bufferId, bufferSize, bufferFlags)
val mappedBuffer = glMapNamedBufferRange(bufferId, …Run Code Online (Sandbox Code Playgroud)