Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Android kotlin.TypeCastException:null不能强制转换为非null类型com.midsizemango.databasekotlin.Note_Android_Kotlin - Fatal编程技术网

Android kotlin.TypeCastException:null不能强制转换为非null类型com.midsizemango.databasekotlin.Note

Android kotlin.TypeCastException:null不能强制转换为非null类型com.midsizemango.databasekotlin.Note,android,kotlin,Android,Kotlin,我试图在Kotlin中编写我的应用程序,但我发现null不能转换为非null类型,并且当我在额外的注释中打开EditNoteActivity时,应用程序强制停止 非常感谢您的帮助 代码: class-EditNoteActivity:AppCompatActivity(){ 变量注释:注释?=null private val editNote:TextView?=null private val fabdrwble:布尔?=null private val notesData:MutableLi

我试图在Kotlin中编写我的应用程序,但我发现null不能转换为非null类型,并且当我在额外的注释中打开EditNoteActivity时,应用程序强制停止

非常感谢您的帮助

代码:

class-EditNoteActivity:AppCompatActivity(){
变量注释:注释?=null
private val editNote:TextView?=null
private val fabdrwble:布尔?=null
private val notesData:MutableList?=null
私有变量databaseHelper:databaseHelper?=null
私有值保存:布尔值?=null
私有变量saveButton:FloatingActionButton?=null
private val tint:ColorStateList?=null
内部变量mRowId:Long?=null
内部变量微调器:微调器?=null
内部变量微调器文本:字符串?=null
内部变量fav:Int=0
内部变量msharedfromtfilter=false
内部变量editTitle:EditText?=null
内部变量editContent:EditText?=null
内部变量inputlayoutTitle:TextInputLayout?=null
内部变量inputlayoutContent:TextInputLayout?=null
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u edit\u note)
var toolbar=findviewbyd(R.id.toolbar\u edit)作为工具栏?
设置支持操作栏(工具栏)
如果(supportActionBar!=null)
supportActionBar!!.setDisplayHomeAsUpEnabled(真)
databaseHelper=databaseHelper(applicationContext)
inputlayoutTitle=findViewById(R.id.inputlayoutTitle)作为文本InputLayout?
inputlayoutContent=findViewById(R.id.inputlayoutContent)作为文本InputLayout?
editTitle=findViewById(R.id.note\u title)作为EditText
editContent=findViewById(R.id.note\u content)作为EditText?
val bundle=intent.extras
val s=bundle.getString(“编辑”)
如果(s==“添加”){
window.setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入\u状态\u可见)
}否则,如果(s==“editv”){
window.setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入\u状态\u隐藏)
}
note=intent.getSerializableExtra(额外注释)作为注释
如果(注意!=null){
editTitle?.setText(注意!!.getTitle())
editContent?.setText(注意!!.getContent())
}否则{
注=注()
//注:setUpdatedAt(新日期());
}
saveButton=findViewById(R.id.add\u edit\u按钮)作为FloatingActionButton?
保存按钮!!.setOnClickListener{
如果(isNoteFormOk){
setNoteResult()
完成()
}否则
validateNoteForm()
}
var ll=作为线性布局的findViewById(R.id.llmain)?
var ll1=作为线性布局的findViewById(R.id.ll1)?
/*if(note.getColor()==Color.TRANSPARENT){
selectedColor=预选;
}否则{
selectedColor=note.getColor();
}
getWindow().addFlags(WindowManager.LayoutParams.FLAG_半透明_状态);
systemBarTintManager=新的systemBarTintManager(此);
systemBarTintManager.setStatusBartIntentabled(true);
ll.setBackgroundColor(selectedColor);
ll1.背景颜色(selectedColor);
setBackgroundColor(note.getColor());
systemBarTintManager.setStatusBarTintColor(selectedColor)*/
}
重写onResume(){
super.onResume()
}
覆盖选项ItemSelected(项:菜单项):布尔值{
时间(item.itemId){
android.R.id.home->{
onBack()
返回真值
}
/*
案例R.id.演讲:
试一试{
DisplaySpeechRecognitor();
}捕获(ActivityNotFounde异常){
Intent browserIntent=新意图(Intent.ACTION\u视图,Uri.parse(“https://market.android.com/details?id=com.google.android.googlequicksearchbox"));
startActivity(浏览器内容);
}
返回true*/
else->return super.onOptionsItemSelected(项目)
}
}
私人娱乐显示语音识别器(){
val intent=intent(识别器intent.ACTION\u识别\u语音)
intent.putExtra(RecognizerIntent.EXTRA语言模型,RecognizerIntent.LANGUAGE模型自由形式)
startActivityForResult(意图、言语、请求、代码)
}
重写ActivityResult(请求代码:Int,结果代码:Int,
数据:意图){
if(requestCode==SPEECH\u REQUEST\u CODE&&resultCode==Activity.RESULT\u OK){
val results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_results)
val spokenText=结果[0]
editContent?.setText(spokenText)
}
if(requestCode==RequestResultCode.REQUEST\u CODE\u ADD\u NOTE){
if(resultCode==Activity.RESULT\u确定){
addNote(数据)
}
}
}
private val isNoteFormOk:Boolean
得到(){
val title=editTitle?.text.toString()
return!(title==null | | title.trim{it在此行:

note = intent.getSerializableExtra(EXTRA_NOTE) as Note
Note
是一个,因此对它的强制转换将触发空检查。由于您在之后手动将
Note
null
进行比较,可能您指的是,如果表达式不是右侧指定的类型,则会生成
null

note = intent.getSerializableExtra(EXTRA_NOTE) as? Note

就像Swift一样!@Dante Kotlin初始版本:2011,Swift初始版本:2014。我认为情况正好相反;)它的回答非常棒。我想知道,为什么编译器没有意识到这个问题。因为它在编译时不知道值。只有在运行时它才检测到空值。
note = intent.getSerializableExtra(EXTRA_NOTE) as? Note