Java 在静态上下文中从调用非静态方法
很抱歉问了这么长的问题,但我真的需要帮助 所以我一直在尝试为我的这个学校项目制作一个摄像头应用程序。一般来说,我对编码非常陌生,对Java也不太了解。我决定使用Forgle的CameraKit库来帮助我解决这个问题。他们说我所要做的就是包括Java 在静态上下文中从调用非静态方法,java,android,object,static,Java,Android,Object,Static,很抱歉问了这么长的问题,但我真的需要帮助 所以我一直在尝试为我的这个学校项目制作一个摄像头应用程序。一般来说,我对编码非常陌生,对Java也不太了解。我决定使用Forgle的CameraKit库来帮助我解决这个问题。他们说我所要做的就是包括 protected void onResume() { super.onResume(); CameraView.start(); 及 我应该能够启动和停止我试图创建的相机预览。 但是,当我将此代码添加到我的主要活动中时,我得到了以下结果
protected void onResume() {
super.onResume();
CameraView.start();
及
我应该能够启动和停止我试图创建的相机预览。
但是,当我将此代码添加到我的主要活动中时,我得到了以下结果:
无法从静态上下文引用非静态方法“stop()”/“start()”
我尝试过一些事情,比如尝试创建类的对象并从中调用方法(我不完全确定我说的对不对)
当我尝试运行时,我得到:
无法解析构造函数CameraView()
我还尝试创建名为“CameraView”的类的实例,该类是方法“start();”和“stop();”的所在。遗憾的是,我没能做到这一点
关键是我尽了我所能理解的一切,但任何帮助都将不胜感激
在查看库的代码之后,我发现CameraView类中的start方法和stop方法都没有声明为“static”。所以我真的不知道这个问题是从哪里来的,也不知道如何克服它假设您正在学习的教程就是这个 当他们说“你所要做的就是”添加以下代码时:
@Override
protected void onResume() {
super.onResume();
cameraView.start();
}
@Override
protected void onPause() {
cameraView.stop();
super.onPause();
}
他们正在与更有经验的开发人员交谈。他们遗漏的部分是cameraView来自哪里?
第一步是在布局中包含
。但即使在这之后,您也需要找到它并将其分配给cameraView
变量。所以,你真的需要这些:
public class MainActivity extends AppCompatActivity {
private CameraView cameraView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // `activity_main.xml` must have a `<CameraView>` tag with id `camera`
cameraView = (CameraView) findViewById(R.id.camera);
}
@Override
protected void onResume() {
super.onResume();
cameraView.start();
}
@Override
protected void onPause() {
cameraView.stop();
super.onPause();
}
}
public类MainActivity扩展了AppCompatActivity{
私人摄影师;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);/`activity_main.xml`必须有一个id为`camera`的`tag`
cameraView=(cameraView)findViewById(R.id.camera);
}
@凌驾
受保护的void onResume(){
super.onResume();
cameraView.start();
}
@凌驾
受保护的void onPause(){
cameraView.stop();
super.onPause();
}
}
假设您正在学习的教程是本教程
当他们说“你所要做的就是”添加以下代码时:
@Override
protected void onResume() {
super.onResume();
cameraView.start();
}
@Override
protected void onPause() {
cameraView.stop();
super.onPause();
}
他们正在与更有经验的开发人员交谈。他们遗漏的部分是cameraView来自哪里?
第一步是在布局中包含
。但即使在这之后,您也需要找到它并将其分配给cameraView
变量。所以,你真的需要这些:
public class MainActivity extends AppCompatActivity {
private CameraView cameraView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // `activity_main.xml` must have a `<CameraView>` tag with id `camera`
cameraView = (CameraView) findViewById(R.id.camera);
}
@Override
protected void onResume() {
super.onResume();
cameraView.start();
}
@Override
protected void onPause() {
cameraView.stop();
super.onPause();
}
}
public类MainActivity扩展了AppCompatActivity{
私人摄影师;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);/`activity_main.xml`必须有一个id为`camera`的`tag`
cameraView=(cameraView)findViewById(R.id.camera);
}
@凌驾
受保护的void onResume(){
super.onResume();
cameraView.start();
}
@凌驾
受保护的void onPause(){
cameraView.stop();
super.onPause();
}
}
您应该阅读帮助代码。如您所见,您必须在…\app\src\main\res\layout\u layout\u file.xml中创建一个视图。您应该阅读帮助代码。如您所见,您必须在…\app\src\main\res\layout\u layout\u file.xml中创建一个视图。非常感谢Ben!非常感谢!非常感谢你,本!非常感谢!