无法使用main函数将上下文从主活动传递到非活动

时间:2015-11-27 22:24:25

标签: java android android-activity android-assets

我有MainActivity class我已经实现了一个主要功能。此main函数通过传递上下文(无法实现)来调用非活动类。在非活动类中,我想从assets文件夹访问一个文件(需要一个上下文,因此传递一个文件)并将其打印在LogCat中。这就是我尝试这样做的方式

MainActivity:

public class MainActivity extends AppCompatActivity
{

    public static void main(String[] args)
    {
        DiseaseAlgo(this).Parser();//Error. Unable to pass context
        return;
    }

    //etc
}

NonActivity Class:

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

我无法弄清楚如何传递背景并致电疾病导演'来自这个功能的方法。我一直在说:

  

包名称 .MainActivity.this无法从静态内容中引用

我需要这个来检查文本解析的正确性,这是在LogCat上显示它的唯一方法。

1 个答案:

答案 0 :(得分:2)

问题是你在静态函数中使用了this这个词。由于该函数是静态的,因此该类可能有也可能没有实例。什么叫这个功能?

如果您的活动实例正在调用您的Main(),请将其上传(this)作为争论,以便静态函数可以访问它。

我猜Main()不是来自android的功能吗?在main()函数中的Normaly你应该在传递它们之前初始化对象,所以this没有意义,但我不认为android是那样工作的。