【问题标题】:Unable to pass context from main activity to non-activity using main function无法使用主函数将上下文从主活动传递到非活动
【发布时间】:2015-11-27 22:24:24
【问题描述】:

我有一个MainActivity class,在那里我实现了一个主要功能。此主函数通过传递上下文(无法实现)来调用非活动类。在非活动类中,我想从资产文件夹访问一个文件(这需要一个上下文,因此需要传递一个)并将其打印在 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 上显示它的唯一方法。

【问题讨论】:

  • 这真的不是办法,如果你有问题调试-解决它,不要添加另一个问题。
  • 如果这不是要走的路,请建议另一种方法,如果您没有解决方案,请不要对问题投反对票。谢谢
  • 实际上,我没有投反对票。我并没有尝试解决您的问题,因为如果您尝试为 Android 开发,您应该尽量了解自己在做什么。
  • 你知道我该如何解决这个问题吗?

标签: java android android-activity android-assets


【解决方案1】:

问题是您正在使用来自静态函数的单词this。由于该函数是静态的,因此该类可能有也可能没有实例。调用该函数的是什么?

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

我猜Main() 不是来自android 的函数吧?通常在 main() 函数中,您应该在传递对象之前初始化对象,所以 this 没有意义,但我不认为 android 是这样工作的。

【讨论】:

  • 那么你必须回答我的问题,什么叫Main()
  • 我很抱歉这种类型。这是“主要”
  • @bholagabbar 据我所知 main() 在 C++/Java 中与在 Android Java 中不同,你为什么使用 main() ?这是一个android项目吧?
  • 是的。我只是想让 main 调用非活动类,在 logcat 上打印数据并结束
  • @bholagabbar 我不知道你为什么要打电话给main(),试着把代码放在onCreate()方法上,在那里你的活动有一个实例,所以你可以把它传递给@ 987654332@争论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
相关资源
最近更新 更多