Android文档将Intent定义为"包含要执行的操作的抽象描述的信息包".这表明如果需要,您应该能够多次重复使用单个Intent对象,但是我没有看到任何示例显示这种情况/安全.有什么理由不做以下事情:
private final Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
...
protected void onCreate(Bundle savedInstanceState) {
enabledBluetoothIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
...
}
Run Code Online (Sandbox Code Playgroud)
然后startActivityForResult(enableDiscoverableIntent, REQUEST_ENABLE_BT_DISCOVERY)在代码中的多个地方调用?如果相同的意图开始两次会发生什么?
文档说:
结果以及当列值为null或列类型不是字符串类型时此方法是否抛出异常是实现定义的.
他们在谈论哪种实施?sqlite的版本?会打电话
cursor.getString(INT_COLUMN)
Run Code Online (Sandbox Code Playgroud)
将int价值强制转化为String?
我遇到了一个奇怪的问题OnDragListener.我的目标视图使ACTION_DROP事件正常并处理它; 但它永远不会收到ACTION_DRAG_STARTED或ACTION_DRAG_ENDED事件(事实上它除了掉落之外从未收到任何事件).
可能是什么导致了这个?这是一个问题,因为当掉落发生在目标之外时,我无法处理这种情况.
我发现了这个问题,但答案对我来说并不清楚.任何想法都非常感激.
我的可拖动视图有OnTouchListener:
@Override
public boolean onTouch(View v, MotionEvent ev) {
switch (ev.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
startPointX = ev.getX();
startPointY = ev.getY();
isOnClick = true;
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
if (isOnClick) {
isOnClick = false;
// handle single click
}
break;
case MotionEvent.ACTION_MOVE:
if (isOnClick && movePassesThreshold(ev)) {
isOnClick = false;
draggableView.startDrag(...);
}
break;
default:
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
目标视图有OnDragListener: …