我有一个MapView动作栏,由ActionBarSherlock提供动力.操作栏分开(在"窄"屏幕上)和重叠/半透明(android:windowActionBarOverlay为真).或多或少像Google地图应用.
现在我想在地图顶部推送视图,在屏幕底部仍保持在底部操作栏上方.我的问题在于我不知道底部操作栏的高度.坦率地说,我甚至无法找到一种方法来知道它是否被绘制.getHeight()似乎返回顶部操作栏的高度(或者它可能是两者的高度,但我仍然不知道底部操作栏是否存在.
请告诉我这些信息就在我面前!
我使用ViewPagerACL来显示几个Fragments.首先,这些片段中的所有片段都ListFragment包含列表.我正在尝试模仿2列表,因此列表中的每个元素都包含另外两个对象的列表.我希望每个单元格都可以长按(不是整个列表项),因此我实现了自己的ColumnLayout(也许它应该被称为CellLayout).每个列表项包含两个可长按的ColumnLayouts,并实现getContextMenuInfo()返回有关长按哪个实体的信息.此方法查找ViewPager,请求当前片段,然后调用片段以从长时间单击的视图中返回实体ID.为了获得片段需要执行的正确行:
getListView().getPositionForView(v)
Run Code Online (Sandbox Code Playgroud)
这就是问题开始的地方.有时会getListView()抛出IllegalStateException"内容视图尚未创建".即onCreateView(...)没有被召唤.这有时仅在应用程序恢复时发生.今天,我设法通过在我的Galaxy Nexus上的设置>开发人员选项中启用"不要保持活动"选项来重新产生问题.我启动应用程序,按Home,然后从最近的应用程序菜单重新打开应用程序,现在,如果我长按listview中的任何单元格,则抛出此异常.通过一些调试输出,我设法验证从未调用onCreateView.这有点奇怪,因为整个ViewPager及其Fragment及其ListView及其单元格项目都被绘制出来了!
我在#android-dev上被告知ListFragment在ACL中不支持自定义布局,所以我重新实现了我android.support.v4.app.Fragment没有使用ListFragment但没有帮助.
简短摘要:我有一个自定义布局,用于处理长按布局的事件,目的是创建一个MenuInfo对象,其中包含有关按下的单元格中的权限的信息.为了找到布局中包含的实体,listview.getPositionForView(View v)最终被调用,有时会导致IllegalStateException.
在这里我的自定义布局(也许有一种ViewPager比在视图层次结构中挖掘更容易的方法):
package org.remotestick;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.widget.LinearLayout;
public class ColumnLayout extends LinearLayout {
public ColumnLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ColumnLayout(Context context) {
super(context);
}
@Override
protected ContextMenuInfo getContextMenuInfo() {
int itemTypeId = …Run Code Online (Sandbox Code Playgroud) 我有一个与BigQuery节点一起运行的Node-RED安装,但突然停止工作。能够将其范围缩小到一个很小的例子,我再也无法工作了:
代码如下:
// Imports the Google Cloud client library
const BigQuery = require('@google-cloud/bigquery');
// Your Google Cloud Platform project ID
const projectId = 'my-project';
const file = './google-cloud-auth.json'
// Creates a client
const bigquery = new BigQuery({
projectId: projectId,
keyFilename: file
});
const datainsert = {
"water_total": 555,
"power_vp": 3460651,
"power_ftx": 4401819,
"time": "2018-01-23T09:50:17.672Z",
"power_total": 5737457,
"power_garage_radiator_south": 182521,
"power_garage_radiator_north": 76388
};
// The name for the new dataset
const dataset = bigquery.dataset('consumption');
const table = dataset.table('consumption_test');
table.insert(datainsert, function(err, response) { …Run Code Online (Sandbox Code Playgroud)