getContentResolver()';从Kotlin类调用Java方法时出现空对象引用错误
论创建方法getContentResolver()';从Kotlin类调用Java方法时出现空对象引用错误,java,android,kotlin,methods,Java,Android,Kotlin,Methods,论创建方法 private lateinit var main: MainActivity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_regions) main = MainActivity() } 这是我的Kotlin方法,main是我的Java类
private lateinit var main: MainActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_regions)
main = MainActivity()
}
这是我的Kotlin方法,main是我的Java类对象,我试图调用setOutPath方法,但当我运行程序时,它在一个空对象引用错误上给出了“android.content.Context.getContentResolver()”
override fun onActivityResult(
requestCode: Int,
resultCode: Int,
data: Intent?
) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == MainActivity2.SCREEN_RECORD_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
//Set file path or Uri depending on SDK version
main.setOutputPath()
//Start screen recording
hbRecorder.startScreenRecording(data, resultCode, this)
}
}
}
这是我的java方法。这一行给了我一个错误
ContentResolver resolver;
ContentValues contentValues;
Uri mUri;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void setOutputPath() {
String filename = generateFileName();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
resolver = getContentResolver();
contentValues = new ContentValues();
contentValues.put(MediaStore.Video.Media.RELATIVE_PATH, "Movies/" + "HBRecorder");
contentValues.put(MediaStore.Video.Media.TITLE, filename);
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, filename);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4");
mUri = resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues);
//FILE NAME SHOULD BE THE SAME
hbRecorder.setFileName(filename);
hbRecorder.setOutputUri(mUri);
}else{
createFolder();
hbRecorder.setOutputPath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES) +"/HBRecorder");
}
}
请显示类定义行。这些是什么类?我不认为把这个问题作为规范NPE问题的重复来结束是有用的。很明显,OP正在调用一个方法
getContentResolver()
,这如何生成NPE并不明显。我重新开始了这个问题。这里的main
是什么。我怀疑你创建了一个活动实例?请用这个细节更新这个问题。main是我的Java类对象,我已经在我的问题@admit中定义了main,这不是我要问的。我是问你如何初始化main?
resolver = getContentResolver();