我正在尝试设置一个通用类来从Firebase检索数据,但我仍然坚持解析部分.
override fun onDataChange(snapshot: DataSnapshot) {
try {
val data: T? = snapshot.getValue(dataType)
onDataReadFromDatabase(data, d, snapshot, changeListener)
} catch(e: Exception) {
d.resumeWithException(e)
}
}
Run Code Online (Sandbox Code Playgroud)
T是我的数据类型,dataType是Class<T>.这适用于平面数据结构,但是当它list的子T节点失败时Expected a List while deserializing, but got a class java.util.HashMap.
失败的数据结构示例:
{
"id": "xxx",
"name": "test",
"items": {
"a": {"name": "itemA"},
"b": {"name": "itemB"},
"c": {"name": "itemC"},
"d": {"name": "itemD"}
}
}
Run Code Online (Sandbox Code Playgroud)
使用这样的模型:
data class ItemList(val id: String, val name: String, val items: MutableList<Item>) { …Run Code Online (Sandbox Code Playgroud) 我已经在我的一台服务器上安装了 Nginx,以便用作Rancher应用程序的负载均衡器。\n我的配置基于此处找到的配置: https: //rancher.com/docs/rancher/v2。 x/en/安装/ha/create-nodes-lb/nginx/
\n\n所以我的配置是:
\n\nload_module /usr/lib/nginx/modules/ngx_stream_module.so;\n\nworker_processes 4;\nworker_rlimit_nofile 40000;\n\nevents {\n worker_connections 8192;\n}\n\nstream {\n upstream rancher_servers_http {\n least_conn;\n server <ipnode1>:80 max_fails=3 fail_timeout=5s;\n server <ipnode2>:80 max_fails=3 fail_timeout=5s;\n server <ipnode3>:80 max_fails=3 fail_timeout=5s;\n }\n server {\n listen 80;\n\n proxy_pass rancher_servers_http;\n }\n\n upstream rancher_servers_https {\n least_conn;\n server <ipnode1>:443 max_fails=3 fail_timeout=5s;\n server <ipnode2>:443 max_fails=3 fail_timeout=5s;\n server <ipnode3>:443 max_fails=3 fail_timeout=5s;\n }\n server {\n listen 443;\n proxy_pass rancher_servers_https;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的配置按预期工作,但我最近在集群上安装了Nextcloud 。这给了我以下错误:
\n\n\n\n
- \n
您的 Web 服务器未正确设置以解析 \xe2\x80\x9c/.well-known/caldav\xe2\x80\x9d。更多信息可以在文档中找到。\n
您的 …
我创建了一个包含我的标签和我的 editText 的简单布局。多次包含此布局以创建表单。
但是使用这种方法,“nextFocus”功能无法正常工作,我找不到解决方案。我需要给出下一个editText的id,但因为它在一个包含布局中,id与当前的editText相同。
他们是通过仅使用 xml 解决方案来实现这一目标的方法吗?我特别想到数据绑定。
这是我的布局:
包括布局:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="viewModels.StringDataTypeViewModel"/>
<variable
name="nextFocus"
type="Integer"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="Nom de famille : "
android:text="@{viewModel.label}"
android:singleLine="true"
android:ellipsize="end"/>
<EditText android:id="@+id/value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="@dimen/patient_detail_edittext_text_size"
android:inputType="textPersonName"
android:ellipsize="end"
tools:text="Dupont"
android:text="@={viewModel.value}"
android:textColor="@android:color/widget_edittext_dark"
android:clickable="@{viewModel.editable}"
android:cursorVisible="@{viewModel.editable}"
android:focusable="@{viewModel.editable}"
android:focusableInTouchMode="@{viewModel.editable}"
android:background="@{viewModel.editable ? @android:drawable/edit_text : @drawable/empty_drawable}"
android:nextFocusForward="@id/value"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
表格布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="@{viewModel.editable ? View.VISIBLE: View.GONE}">
<include layout="@layout/string_data_type_layout"
app:viewModel="@{viewModel.familyNameViewModel}" />
<include layout="@layout/string_data_type_layout"
app:viewModel="@{viewModel.givenNameViewModel}" />
<include layout="@layout/string_data_type_layout"
app:viewModel="@{viewModel.patientCodeViewModel}" …Run Code Online (Sandbox Code Playgroud) android focus android-layout android-edittext android-databinding
我正在尝试使用此处和此处所述的Android的Systrace功能,但是当我运行上述链接中描述的命令行时,它会给我这个错误:
File "C:\Python27\lib\subprocess.py", line 664, in __init__
raise ValueError("preexec_fn is not supported on Windows "
ValueError: preexec_fn is not supported on Windows platforms
Run Code Online (Sandbox Code Playgroud)
上述命令行是:
python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
Run Code Online (Sandbox Code Playgroud)
我不是一个python开发者,所以我对它没有任何线索,谷歌对我帮助不大,任何想法?
- 我在Windows 10计算机上运行.
我目前使用该DataBindingUtil.inflate(inflater, layoutId, parent, attachToParent)方法膨胀我的大部分布局。
但是我看到他们是一个AsyncLayoutInflater因为Support Library revision 24它允许通货膨胀发生在一个单独的线程上。我想在我的应用程序的某些部分使用这种机制,但我不想放弃使用databinding。
DataBindingUtil不包含任何方法,如inflateAsync(). 但它是否计划增加对此的支持?或者他们是将AsyncLayoutInflater和 的使用结合起来的一种方式databinding?
我试图使用AsyncLayoutInflater里面的inflate方法DataBindingUtil但实际上AsyncLayoutInflater不是原始LayoutInflater.
谢谢阅读!
这是我的场景:我有一系列Activity. 我为那些Activity会断开用户连接的超时设置了超时,以防用户暂时处于非活动状态。但我想将用户重定向到最后一个屏幕以防他登录
当我断开用户连接时,我正在调用它:
public void restartFromLoginActivity(boolean saveCurrentState, String previousLoggedUserId) {
Activity currentActivity = getCurrentActivity();
Intent intent = new Intent(CERHISApplication.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
if(saveCurrentState && currentActivity != null){
Bundle extras = new Bundle();
extras.putString(ApplicationController.KEY_PREVIOUSLY_LOGGED_USER_ID, previousLoggedUserId);
intent.putExtras(extras);
currentActivity.startActivityForResult(intent, ApplicationController.RC_LOGIN);
}
else
startActivity(intent);
if(currentActivity != null)
currentActivity.finish();
}
Run Code Online (Sandbox Code Playgroud)
在我的LoginActivity检查中,userId 是否相同,如果相同,我尝试通过onActivityResult如下方式调用重定向用户:
if (getCallingActivity() != null && userId.equals(previouslyLoggedUserId))
setResult(RESULT_OK);
else
ApplicationController.startHomeActivity(this);
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我FLAG_ACTIVITY_NEW_TASK根据自己的意图设置了标志。正如文档中所说:
当调用者从正在启动的活动中请求结果时,不能使用此标志。
据我了解, anActivity只能Activity从任务中接收结果。但是我需要设置这个标志,否则用户可以Activity stack通过按后退按钮返回。 …
我已经安装了Angular Translator插件,但是它似乎不起作用。
但是没有任何反应,我也没有收到任何错误消息。
我正在使用VSCode 1.38.1和Angular 8。
知道为什么我无法使用此插件吗?我还将采用一种灵活的替代方法来回答我的问题。
非常感谢。
我是 Kubernetes 新手。
但我现在陷入了最后一个问题:podgitlab-runner失败并显示以下日志:
ERROR: Registering runner... failed runner=Mk5hMxa5 status=couldn't execute POST against https://gitlab.mydomain.com/api/v4/runners: Post https://gitlab.mydomain.com/api/v4/runners: x509: certificate is valid for ingress.local, not gitlab.mydomain.com
PANIC: Failed to register this runner. Perhaps you are having network problems
Run Code Online (Sandbox Code Playgroud)
证书的描述使用kubectl describe certificate gitlab-gitlab-tls -n gitlab:
Name: gitlab-gitlab-tls
Namespace: gitlab
Labels: app=unicorn
chart=unicorn-2.4.6
heritage=Tiller
io.cattle.field/appId=gitlab
release=gitlab
Annotations: <none>
API Version: certmanager.k8s.io/v1alpha1
Kind: Certificate
Metadata: …Run Code Online (Sandbox Code Playgroud) 我正在使用支持库中的BottomSheetDialogFragment,它警告我该函数setupDialog()只能在库组中使用。但这个函数是我初始化对话框的地方:
@Override
public void setupDialog(final Dialog dialog, int style) {
super.setupDialog(dialog, style);
FragmentArgs.inject(this);
dialog.setOnShowListener(dialogINterface -> {
if(dialog.getWindow() != null) {
dialog.getWindow().setLayout(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT);
}
});
BottomSheetStatisticsExportBinding binding = DataBindingUtil.inflate(
LayoutInflater.from(getContext()),
R.layout.bottom_sheet_statistics_export,
null,
false
);
View contentView = binding.getRoot();
dialog.setContentView(contentView);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
if( behavior != null && behavior instanceof BottomSheetBehavior )
((BottomSheetBehavior) behavior).setBottomSheetCallback(bottomSheetBehaviorCallback);
for (Export export : exports)
binding.flexbox.addView(new ExportItemView(getContext(), export));
}
Run Code Online (Sandbox Code Playgroud)
警告是因为我使用的是 super 方法。但我该怎么办呢?我应该将我的代码移到另一个函数中(onCreateDialog(),onResume()...?),我应该删除对 …
我正在尝试消除我的Android应用程序的所有警告,其中之一就是:
viewModel.value是一个盒装字段,但需要取消装箱才能执行android:checked.这可能会导致NPE,因此数据绑定将安全地取消它.您可以更改表达式并使用safeUnbox()显式包装viewModel.value以防止出现警告
其中value是ObservableField来自超类的泛型:
public abstract class BaseDataTypeViewModel<T> extends BaseObservable {
public final ObservableField<T> value = new ObservableField<>();
...
}
Run Code Online (Sandbox Code Playgroud)
并在某处作为一个扩展Boolean:
public class CheckBooleanDataTypeViewModel extends BaseDataTypeViewModel<Boolean> {
...
}
Run Code Online (Sandbox Code Playgroud)
我看到数据绑定 - safeUnbox警告发生警告,因为这是一个Boolean而不是一个boolean,所以我试图添加这个:android:checked="@={safeUnbox(viewModel.value)}"而不是android:checked="@={viewModel.value}"然后我得到一个错误说我无法反转safeUnbox()方法.
****/数据绑定错误****msg:表达式android.databinding.DynamicUtil.safeUnbox(viewModelValue)无法反转:方法safeUnbox没有反转,必须在方法中添加@InverseMethod注释才能指示在双向绑定表达式中使用它时应该使用哪个方法
我正确地理解了2个分离的问题,但是我必须忍受警告以避免错误,或者他们是避免警告和错误的解决方案吗?这@InverseMethod是怎么回事?我没有设法添加这个注释,因为该方法来自android包.
android ×7
angular ×1
angular-i18n ×1
asynchronous ×1
bottom-sheet ×1
firebase ×1
focus ×1
gitlab ×1
kotlin ×1
kubernetes ×1
nginx ×1
parsing ×1
python ×1
systrace ×1
warnings ×1