我正在尝试将我的项目迁移到查看绑定,但在启动应用程序时出现异常。
我的主要活动包含一个 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) 我正在尝试使用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) 在我的 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/ 上正确解析时,我没有收到任何错误,所以我不知道出了什么问题。
我正在尝试创建一个自定义对话框,该对话框将与其内容一样短,直到该内容太高为止,此时它应该是可滚动的。
这就是我要开始的内容:
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) 我很难设计一个查询来搜索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.
我仍然是一个jQuery新手,我正在尝试将ThemeForest模板集成到我的项目中.这个ThemeForest模板(vPanel)很棒但是它集成了很多jQuery插件和功能,所以我有很多$(document).ready()到处都有,我很难搞清楚哪个脚本做了什么.我正在寻找的原因是因为所有这些脚本在初始加载时都很好地适用于页面,但是我的UI中还有一些部分稍后通过AJAX加载.这就是我的问题开始的地方:有没有办法将所有脚本重新应用到通过AJAX加载的部分HTML?
我的布局中有一堆 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 错了吗?这是一个已知的错误吗?有解决方法吗?