没有 MainActivity,我不能使用 getAssets 方法

I can't use getAssets method without MainActivity


当我在 Android Studio 中编写代码时,没有 MainActivity 就无法使用 getAssets。
这是 MainActivity.

package com.example.maguro.mnist_bg2;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
import android.util.Log;
import android.content.res.AssetManager;
import org.tensorflow.contrib.android.TensorFlowInferenceInterface;

public class MainActivity extends AppCompatActivity {
    CanvasView canvasview; //already exist CanvasView class
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        canvasview = new CanvasView(this);
        setContentView(canvasview);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        switch(item.getItemId()) {
            case R.id.item1:
                canvasview.onReset();
                break;
            case R.id.item2:
                canvasview.onDetect();
                break;
            case R.id.item3:
                finish();
                break;
        }
        return true;
    }

}

这是另一个例子class。

package com.example.maguro.mnist_bg2;

import android.content.Context;
import android.content.res.AssetManager;
import org.tensorflow.contrib.android.TensorFlowInferenceInterface;


public class DigitDetector {
    static{
        System.loadLibrary("tensorflow_inference");
    }

    protected void onDetect(byte[] bytes){
        TensorFlowInferenceInterface inference = new TensorFlowInferenceInterface(getAssets(), "beginner-graph.pb");
    }

}

错误点几乎是最后一行TensorFlowInferenceInterface inference = new TensorFlowInferenceInterface(getAssets(), "beginner-graph.pb"); 虽然Android工作室说

Cannot resolve method 'getAssets()

Android Studio 没有在 MainActivity

中指出该错误

即使我将另一个 class 模块等同于 MainActivity,Android Studio 也说了同样的错误。

为什么会出错?

请把你的手借给我

在您的 class 中创建构造函数。 例如:-

Context context;
DigitDetector(Context ctx){
context = ctx;
}

并将其用作。

context.getAssets()....
import android.content.Context;
import android.content.res.AssetManager;
import org.tensorflow.contrib.android.TensorFlowInferenceInterface;


public class DigitDetector {

Context context;

public DigitDetector(Context context) {
    this.context =context;
}

static{
    System.loadLibrary("tensorflow_inference");
}

protected void onDetect(byte[] bytes){
    TensorFlowInferenceInterface inference = new TensorFlowInferenceInterface(context.getAssets(), "beginner-graph.pb");
}

}

尝试创建构造函数并在其上传递 activity 上下文。并将其用于 'getAssets()' 方法。