小编Seb*_*ien的帖子

缺少带有 ID 的必需视图以及视图绑定和导航组件

我正在尝试将我的项目迁移到查看绑定,但在启动应用程序时出现异常。

我的主要活动包含一个 NavHostFragment,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:orientation="vertical">

    ...

    <androidx.fragment.app.FragmentContainerView
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            app:defaultNavHost="true"
            app:navGraph="@navigation/nav_graph" />

    ...

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

NavHostFragment 中默认加载的第一个片段的实现如下:

class ToolListFragment : Fragment(R.layout.fragment_tool_list) {
    ...
    private var _binding: FragmentToolListBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentToolListBinding.inflate(layoutInflater, container, false)
        return binding.root
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是片段布局的相关部分:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"
        tools:context=".ToolListFragment"
        android:orientation="vertical"
        android:background="@android:color/white">

    <com.google.android.material.tabs.TabLayout …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewbinding

5
推荐指数
1
解决办法
1万
查看次数

使用groovy和数据发送POST已经过URL编码

我正在尝试使用Groovy HTTPBuilder发送POST,但我想发送的数据已经是URL编码的,所以我希望HTTPBuilder按原样发布它.我尝试了以下方法:

def validationString = "cmd=_notify-validate&" + postData
def http = new HTTPBuilder(grailsApplication.config.grails.paypal.server)
http.request(Method.POST) {
    uri.path = "/"
    body = validationString
    requestContentType = ContentType.TEXT

    response.success = { response ->
            println response.statusLine
    }
}
Run Code Online (Sandbox Code Playgroud)

但它给了我一个NullPointerException:

java.lang.NullPointerException
at groovyx.net.http.HTTPBuilder$RequestConfigDelegate.setBody(HTTPBuilder.java:1200)
Run Code Online (Sandbox Code Playgroud)

groovy encoding http

3
推荐指数
1
解决办法
5977
查看次数

Grails YAML 映射列表

在我的 Grails 3 application.yml 中,我定义了一个映射列表,如下所示:

tvoxx:
    cfpApis:
        -
            url: http://cfp.devoxx.be/api/conferences
            youtubeChannelId: UCCBVCTuk6uJrN3iFV_3vurg
        -
            url: http://cfp.devoxx.fr/api/conferences
        -
            url: http://cfp.devoxx.ma/api/conferences
            youtubeChannelId: UC6vfGtsJr5RoBQBcHg24XQw
        -
            url: http://cfp.devoxx.co.uk/api/conferences
        -
            url: http://cfp.devoxx.pl/api/conferences
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用以下代码在我的服务中加载此配置时,apiConfig 为空:

def apiConfig = grailsApplication.config.getProperty("tvoxx.cfpApis")
Run Code Online (Sandbox Code Playgroud)

当应用程序启动并且我的 YAML 代码在http://yaml-online-parser.appspot.com/ 上正确解析时,我没有收到任何错误,所以我不知道出了什么问题。

configuration grails yaml

3
推荐指数
1
解决办法
1189
查看次数

具有灵活高度和可滚动内容的对话框

我正在尝试创建一个自定义对话框,该对话框将与其内容一样短,直到该内容太高为止,此时它应该是可滚动的。

这就是我要开始的内容:

showDialog(
  context: context,
  useSafeArea: true,
  barrierDismissible: true,
  useRootNavigator: false,
  builder: (context) => Dialog(
    shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(20),
    ),
    elevation: 3,
    backgroundColor: Theme.of(context).colorScheme.surface,
    child: Padding(
      padding: const EdgeInsets.all(20.0),
      child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: [
          Text(lorem(paragraphs: 1)),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: () {
              Navigator.pop(context);
            },
            child: Text('OK'),
          ),
        ],
      ),
    ),
  ),
);
Run Code Online (Sandbox Code Playgroud)

这给了我以下结果:

在此输入图像描述

现在,如果我添加更多文本以使其更高,对话框的高度就会调整:

在此输入图像描述

如果我们更进一步,在某个时候,我们就会陷入溢出:

在此输入图像描述

因此,我将文本包装在 SingleChildScrollView 中,但这不足以修复溢出,因此我将 SingleChildScrollView 包装在 Expanded 中:

Column(
    mainAxisSize: MainAxisSize.min,
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: [
      Expanded(
        child: SingleChildScrollView(
          child: Text(lorem(paragraphs: 30)),
        ),
      ), …
Run Code Online (Sandbox Code Playgroud)

dialog dart flutter flutter-layout

3
推荐指数
1
解决办法
3957
查看次数

BigDecimal上的Hibernate搜索和范围查询

我很难设计一个查询来搜索Item类的所有实例,价格在100到200之间.

这是我的Item类:

@Entity
public class Item {
    @Id @DocumentId
    Long id

    @Field(index = Index.UN_TOKENIZED, store = Store.YES)
    @NumericField
    @FieldBridge(impl = BigDecimalNumericFieldBridge.class)
    BigDecimal price = BigDecimal.ZERO
}
Run Code Online (Sandbox Code Playgroud)

BigDecimalNumericFieldBridge是这里描述的类:https://hibernate.onjira.com/secure/attachment/15952/proposed_doc.txt

卢克告诉我,我有几份价格在100到200之间的文件.

这是我的查询:

FullTextSession fullTextSession = Search.getFullTextSession(session);
final QueryBuilder queryBuilder =     fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Item).get();

Query rootQuery = queryBuilder.bool()
    .must(queryBuilder.range().onField('price').above(100).createQuery())
    .must(queryBuilder.range().onField('price').below(200).createQuery())
    .createQuery();

FullTextQuery ftq = fullTextSession.createFullTextQuery(rootQuery, Item);
List<Item> instanceList = ftq.list();
Run Code Online (Sandbox Code Playgroud)

但无论边界如何,列表总是空的.我知道我做错了什么?

顺便说一句,我正在使用Hibernate Search 3.4.1和Hibernate 3.6.10.

java lucene search hibernate hibernate-search

1
推荐指数
1
解决办法
1999
查看次数

如何将$(document).ready()重新应用于通过AJAX加载的部分HTML?

我仍然是一个jQuery新手,我正在尝试将ThemeForest模板集成到我的项目中.这个ThemeForest模板(vPanel)很棒但是它集成了很多jQuery插件和功能,所以我有很多$(document).ready()到处都有,我很难搞清楚哪个脚本做了什么.我正在寻找的原因是因为所有这些脚本在初始加载时都很好地适用于页面,但是我的UI中还有一些部分稍后通过AJAX加载.这就是我的问题开始的地方:有没有办法将所有脚本重新应用到通过AJAX加载的部分HTML?

javascript ajax jquery

0
推荐指数
1
解决办法
551
查看次数

在 Android 6.0 中设置错误后无法编辑 TextInputEditText

我的布局中有一堆 TextInputEditText,定义如下:

<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

   <android.support.design.widget.TextInputEditText
                android:id="@+id/confirmPassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/registration_confirm_password"
                android:inputType="textPassword" />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

当用户尝试提交表单时,我有一个验证方法来检查每个字段并在无效字段上设置错误,如下所示:

if(confirmPassword.text.toString() != password.text.toString()) {
        confirmPassword.error = "Passwords don't match"
        confirmPassword.setOnKeyListener { _, _, _ ->
            confirmPassword.error = null
            true
        }
        valid = false
}
Run Code Online (Sandbox Code Playgroud)

一旦用户开始纠正他的错误,OnKeyListener 就会立即消除错误。

这段代码在我的模拟器和我的 Android 5.1.1 设备上完美运行。但是在我的一个用户的设备上,三星 Galaxy S6 Edge 和 Android 6.0,当他犯了一个错误并且一个字段上有错误时,他不能再编辑它了。

我使用 TextInputEditText 错了吗?这是一个已知的错误吗?有解决方法吗?

android android-edittext android-textinputedittext

0
推荐指数
1
解决办法
691
查看次数