从静态上下文中调用非静态方法

时间:2017-07-21 15:50:15

标签: java android object static

我很抱歉这个问题很长,但我真的可以使用帮助

所以我一直在努力为这个学校项目制作相机应用程序。我对编码很新,我对Java并不是很了解。我决定使用Furgle的CameraKit库来帮助我。他们说我要做的就是包括

package com.zonal.regionview;

import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.AnalogClock;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Allocate a RegionView.
        final RegionView lRegionView = new RegionView(this);
        // Add some example items to drag.
        lRegionView.addView(new AnalogClock(this));
        lRegionView.addView(new AnalogClock(this));
        lRegionView.addView(new AnalogClock(this));
        // Assert that we only want to drag Views within the confines of the RegionView.
        lRegionView.setWrapContent(true);
        // Assert that after we've finished scaling a View, we want to stop being able to drag it until a new drag is started.
        lRegionView.setDropOnScale(true);
        // Look at the RegionView.
        this.setContentView(lRegionView);
    }

}

original_int = 21110
forward_str = str(original_int)
reverse_str = ''
for char in forward_str:
    reverse_str = char + reverse_str
print(reverse_str)

我应该能够在尝试创建时启动和停止相机预览。 但是,当我将此代码添加到我的主要活动时,我得到了以下内容:

  

非静态方法'stop()'/'start()'不能从静态上下文引用

我尝试了一些尝试创建类的对象并从中调用方法的事情(我不完全确定我说的是否正确)

 protected void onResume() {
    super.onResume();
    CameraView.start();

当我尝试运行时,我得到:

  

无法解析构造函数CameraView()

我还尝试创建名为“CameraView”的类的实例,这是方法“start();”和“停止();”是。遗憾的是,我无法随心所欲。

关键是我尝试了所有我能理解的东西,但任何帮助都会非常感激。

在查看库的代码之后,我看到CameraView类中的start方法或stop方法都没有声明为“static”。所以我真的没有看到问题的来源以及如何克服它

1 个答案:

答案 0 :(得分:3)

假设您正在关注的教程是https://github.com/gogopop/CameraKit-Android#usage ...

当他们说“你需要做的所有事情”时,请添加以下代码:

@Override
protected void onResume() {
    super.onResume();
    cameraView.start();
}

@Override
protected void onPause() {
    cameraView.stop();
    super.onPause();
}

他们正在与经验丰富的开发人员交流。他们遗漏的部分是 cameraView来自哪里?

嗯,第一步是在您的布局中加入<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();
    }
}