没有MainActivity,我无法使用getAssets方法

时间:2017-11-22 07:53:39

标签: java android android-assetmanager


当我在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;
    }

}

这是另一个例子。

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 Studio说了

  

无法解决方法' getAssets()

Android Studio没有在MainActivity

中说出错误

即使我将另一个类模块与MainActivity等同,Android Studio也会说错误。

为什么会出现错误?

请把你的手给我。

2 个答案:

答案 0 :(得分:3)

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");
}

}

尝试在此创建构造函数并传递活动上下文。并用它  ' getAssets()'方法

答案 1 :(得分:1)

在班级中创建一个构造函数。 例如: -

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

并将其用作。

context.getAssets()....