为什么我不能从另一个包含Toast的类中调用Static方法?

时间:2013-03-15 17:20:39

标签: android static-methods

在发布这篇文章之前,我做了我的研究,但我很难准确理解问题所在。所以这是我在第1课中的方法:

public static void scan() {
    for( int j=0; j< objarray.size();j++)
    {

        locationB.setLatitude(objarray.get(j).getlat());
        locationB.setLongitude(objarray.get(j).getlon());

        float distance = locationA.distanceTo(locationB);

        if((distance < 600)&&(distance > 0.0) )
        {
            Toast.makeText(getApplicationContext(),"You can go to" +objarray.get(j).gettitle(),Toast.LENGTH_SHORT).show(); 

        }

    }

此方法中的所有内容都是静态的,唯一给我错误的是Toast.makeText调用。我是否需要将某些内容传递给包含扫描方法的class1?

像这样:

Class1.Scan(something);

我认为这可能与Toast中的getApplicationContext()有关,但我不确定我需要做些什么才能解决这个问题。任何解释都表示赞赏!

2 个答案:

答案 0 :(得分:3)

  

我是否需要将某些内容传递给包含扫描方法的class1?

是的,您需要将当前活动上下文传递给Scan方法以显示Toast,而不是直接调用getApplicationContext()中的Class1方法(来自非Activity类)。将扫描方法更改为:

public static void Scan(Context context) {
   //...your code here....
    Toast.makeText(context,"You can go to"  
                  +objarray.get(j).gettitle(),Toast.LENGTH_SHORT).show(); 

    }

答案 1 :(得分:1)

您是否尝试将应用程序上下文传递给方法? Class1.Scan(getApplicationContext())

public static void scan(Context context) {
    for( int j=0; j< objarray.size();j++)
    {

        locationB.setLatitude(objarray.get(j).getlat());
        locationB.setLongitude(objarray.get(j).getlon());

        float distance = locationA.distanceTo(locationB);

        if((distance < 600)&&(distance > 0.0) )
        {
            Toast.makeText(context,"You can go to" +objarray.get(j).gettitle(),Toast.LENGTH_SHORT).show(); 

        }

    }