在发布这篇文章之前,我做了我的研究,但我很难准确理解问题所在。所以这是我在第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()有关,但我不确定我需要做些什么才能解决这个问题。任何解释都表示赞赏!
答案 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();
}
}