Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IllegalStateException:[TextView]不能为null_Java_Android_Android Layout_Kotlin - Fatal编程技术网

java.lang.IllegalStateException:[TextView]不能为null

java.lang.IllegalStateException:[TextView]不能为null,java,android,android-layout,kotlin,Java,Android,Android Layout,Kotlin,我试图显示从SQL查询中获得的两个值,并在TextView中显示这些值 barcode_field_value3.text = BarcodeProcessor.data.value1 barcode_field_value2?.text = BarcodeProcessor.data.value2 我知道value1和value2的值是正确的,因为我将它们打印到控制台,并且每次都是正确的 在我的LiveBarcodeScanningActivity中,我尝试将上述语句放入onCr

我试图显示从SQL查询中获得的两个值,并在TextView中显示这些值

   barcode_field_value3.text = BarcodeProcessor.data.value1
   barcode_field_value2?.text = BarcodeProcessor.data.value2
我知道value1和value2的值是正确的,因为我将它们打印到控制台,并且每次都是正确的

在我的LiveBarcodeScanningActivity中,我尝试将上述语句放入onCreate()中,但当应用程序启动该活动时,它就崩溃了

我在下面的另一部分尝试更改文本值:

    workflowModel?.detectedBarcode?.observe(this, Observer { barcode ->

            if (barcode != null) {
                val barcodeFieldList = ArrayList<BarcodeField>()
                barcodeFieldList.add(BarcodeField("Module Serial #",   barcode.rawValue ?: ""))
                BarcodeResultFragment.show(supportFragmentManager, barcodeFieldList)

    //This prints the values to the console as a test
                println("This is the RESULTS ---- " + BarcodeProcessor.data.value1)
                println("This is the RESULTS ---- " + BarcodeProcessor.data.value2)

            }
            barcode_field_value3.text = BarcodeProcessor.data.value1
            barcode_field_value2?.text = BarcodeProcessor.data.value2
        })
workflowModel?.detectedBarcode?.observe(此,观察者{barcode->
如果(条形码!=null){
val barcodeFieldList=ArrayList()
添加(条形码字段(“模块序列号”,barcode.rawValue:“”)
显示(supportFragmentManager,条形码字段列表)
//这会将值打印到控制台作为测试
println(“这是结果----”+条形码处理器.data.value1)
println(“这是结果----”+条形码处理器.data.value2)
}
条形码\字段\值3.text=条形码处理器.data.value1
条形码\字段\值2?.text=条形码处理器.data.value2
})
我尝试使这些值为空,但当它们为空时,任何东西都不会改变

条形码结果碎片
/**显示底页,以显示检测到的条形码中包含的条形码字段*/
/**
*控制底部滑入(barcode_field.xml)
*/
类BarcodeResultFragment:BottomSheetDialogFragment(){
覆盖创建视图(
layoutInflater:layoutInflater,
视图组:视图组?,
捆绑:捆绑?
):查看{
val视图=布局平坦。充气(R.layout.barcode\u bottom\u表单,视图组)
val参数=参数
val条码字段列表:ArrayList=
if(参数?.containsKey(参数条形码字段列表)==true){
arguments.getParcelableArrayList(参数\条形码\字段\列表)?:ArrayList()
}否则{
Log.e(标记“未传入条形码字段列表!”)
ArrayList()
}
视图。findViewById(R.id.barcode\u field\u recycler\u view)。应用{
setHasFixedSize(真)
layoutManager=LinearLayoutManager(活动)
适配器=条形码字段适配器(条形码字段列表)
}
返回视图
}
重写操作界面(dialogInterface:dialogInterface){
活动?让我来{
//底纸被卸下后返回工作状态。
ViewModelProviders.of(it.get)(WorkflowModel::class.java)
.setWorkflowState(WorkflowState.DETECTING)
}
super.onDismiss(dialogInterface)
}
伴星{
private const val TAG=“BarcodeResultFragment”
private const val ARG\u BARCODE\u FIELD\u LIST=“ARG\u BARCODE\u FIELD\u LIST”
趣味节目(片段管理器:片段管理器,条形码字段数组列表:数组列表){
val barcodeResultFragment=barcodeResultFragment()
barcodeResultFragment.arguments=Bundle().apply{
putParcelableArrayList(参数条形码字段列表,条形码字段ArrayList)
}
barcodeResultFragment.show(碎片管理器,标记)
}
有趣的解雇(碎片管理器:碎片管理器){
(fragmentManager.findFragmentByTag(TAG)作为BarcodeResultFragment?.Disclose()
}
}
}
错误显示“条形码字段值3不得为空”。
只有在初始化了片段中的条形码\u字段\u值3成员后,才能验证代码是否正在运行。您必须像这样使用小部件

view.barcode_field_value3.text=
view.barcode_field_value2.text=
view = inflater.inflate(R.layout.fragment_dashboard, container, false)
override fun onActivityResult(requestCode:Int, resultCode:Int, data:Intent):Void {
if (requestCode == requestCode) {
    if (resultCode == RESULT_OK) {

    }
}
}
此处视图是主布局,并在onCreateView中声明它,如下所示

view.barcode_field_value3.text=
view.barcode_field_value2.text=
view = inflater.inflate(R.layout.fragment_dashboard, container, false)
override fun onActivityResult(requestCode:Int, resultCode:Int, data:Intent):Void {
if (requestCode == requestCode) {
    if (resultCode == RESULT_OK) {

    }
}
}
请试试这个

val requestCode=100


startActivityForResult(Intent(context,MainActivity::class.java),requestCode)
以及在条形码扫描器活动中

 val data =  Intent();
    val text = "Result to be returned...."
//---set the data to pass back---
    data.setData("Your Data");
    setResult(RESULT_OK, data);
//---close the activity---
    finish()
参加这样的主要活动

view.barcode_field_value3.text=
view.barcode_field_value2.text=
view = inflater.inflate(R.layout.fragment_dashboard, container, false)
override fun onActivityResult(requestCode:Int, resultCode:Int, data:Intent):Void {
if (requestCode == requestCode) {
    if (resultCode == RESULT_OK) {

    }
}
}

将代码放入if条件中。在条件结束时。当代码位于if块内时,它仍会使应用程序崩溃。您可能正在获取值,但尚未初始化文本视图条形码\ u字段\ u值3i在上面添加了条形码ResultFragment。即使我尝试设置条形码\字段\值3.text仍然会给我(不能为null)错误。我认为您的片段的show方法在初始化之前调用过,请让我知道确切的流程,比如为什么要从活动切换到片段?条形码\字段\值3此字段属于活动或片段?条形码\字段\值3位于底部表单上,当使用值扫描条形码时,它将滑入。因此,当按下按钮时,我们从主活动转到扫描器活动,该活动查找条形码并扫描它。然后弹出一张幻灯片,显示结果(我假设这是片段?),条形码字段位于该幻灯片上。然后它将被取消,我们可以扫描另一个条形码。是否可以从fragment类中的伴随对象初始化条形码字段值?