0

在发布此之前,我进行了研究,但我很难准确理解问题所在。所以这是我在第 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 调用。我是否需要向包含 scan 方法的 class1 传递一些东西?

像这样:

Class1.Scan(something);

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

4

2 回答 2

3

我是否需要向包含 scan 方法的 class1 传递一些东西?

是的,您需要将当前 Activity 上下文传递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(); 

    }
于 2013-03-15T17:23:47.977 回答
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(); 

        }

    }
于 2013-03-15T17:24:39.110 回答