我有一个MainActivity class
,在那里我实现了一个主函数。此主函数通过传递上下文来调用非活动类(无法实现)。在非活动类中,我想访问assets文件夹中的一个文件(这需要一个上下文,因此需要传递一个上下文),并将其打印在LogCat中。这就是我尝试的方式
主要活动:
public class MainActivity extends AppCompatActivity
{
public static void main(String[] args)
{
DiseaseAlgo(this).Parser();//Error. Unable to pass context
return;
}
//etc
}
非活动类别:
package com.iotaconcepts.aurum;
import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;
import java.io.FileReader;
import java.io.IOException;
public class DiseaseAlgo
{
static Context mContext;
public DiseaseAlgo(Context context)
{
mContext = context;
}
public static void Parser() throws IOException
{
AssetManager as=mContext.getAssets();
String parse=as.open("symp.txt").toString();
String[] xx=parse.split("t");
for(String i:xx)
Log.w("DiseaseAlgo", i);
}
}
我无法弄清楚如何传递上下文并从此函数调用"DiseaseAlgo"方法。我不断得到:
程序包名称.MainActivity.this不能从静态内容中引用
我需要这个来检查我的文本解析的正确性,这是在LogCat上显示它的唯一方法。
问题是您使用的是静态函数中的单词this
。由于函数是静态的,所以类可能有实例,也可能没有实例。什么在调用该函数?
如果您的活动实例正在调用Main()
,则将其上下文(this
)作为自变量传递,以便静态函数可以访问它
我猜Main()
不是来自安卓的功能吧?通常,在main()
函数中,您应该在传递对象之前初始化对象,所以this
没有意义,但我不认为android是这样工作的。