Android 从活动传递上下文

Android 从活动传递上下文,android,android-studio,android-context,Android,Android Studio,Android Context,直截了当地说,我是这个android编程的初学者,由于“无法解析方法getapplicationcontext”,我对如何从我的活动传递上下文有疑问 这是MyLocationListener.java: 公共类MyLocationListener实现LocationListener{ //这是一个很好的解决方案 私有上下文; 公共MyLocationListener(上下文){ mContext=上下文; } @凌驾 已更改位置上的公共无效(位置){ //从陆地到陆地的纬度 双纬度=locat

直截了当地说,我是这个android编程的初学者,由于“无法解析方法getapplicationcontext”,我对如何从我的活动传递上下文有疑问

这是MyLocationListener.java:

公共类MyLocationListener实现LocationListener{
//这是一个很好的解决方案
私有上下文;
公共MyLocationListener(上下文){
mContext=上下文;
}
@凌驾
已更改位置上的公共无效(位置){
//从陆地到陆地的纬度
双纬度=location.getLatitude();
//在洛卡斯河的经度上
double longitude=location.getLongitude();
//让我们一起吃烤面包
字符串消息=“Lokasi saat ini:\n”+
“纬度=”+纬度+“\n”+
“经度=”+经度;
Toast.makeText(getApplicationContext(),
消息,Toast.LENGTH_LONG).show();
}
//Dipanggil saat供应商dinon aktifkan oleh pengguna
@凌驾
公共无效onProviderDisabled(字符串提供程序){
字符串消息=“GPS已禁用”;
Toast.makeText(getApplicationContext(),
消息,Toast.LENGTH_LONG).show();
}
//dipanggil saat供应商diaktifkan oleh pengguna
@凌驾
公共无效onProviderEnabled(字符串提供程序){
字符串消息=“GPS已启用”;
Toast.makeText(getApplicationContext(),
消息,Toast.LENGTH_LONG).show();
}
//供应商的身份
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
//TODO自动生成的方法存根
}
}
1 您需要将上下文作为传入参数传递

public class MyLocationListener implements LocationListener {

    // Dipanggil saat ada perubahan lokasi geografis pengguna
    private Context mContext;

    public MyLocationListener(Context context) {
        mContext = context;
    }

    @Override
    public void onLocationChanged(Location location) {
// Mendapatkan nilai latitude dari lokasi terbaru
        double latitude = location.getLatitude();

// Mendapatkan nilai longitude dari lokasi terbaru
        double longitude = location.getLongitude();

// Menampilkan lokasi terbaru menggunakan Toast
        String message = "Lokasi saat ini :\n" +
                "Latitude  = " + latitude + "\n" +
                "Longitude = " + longitude;
        // change getApplicationContext() to mContext(inner context reference)
        Toast.makeText(mContext,
                message, Toast.LENGTH_LONG).show();
    }

    // Dipanggil saat provider dinon-aktifkan oleh pengguna
    @Override
    public void onProviderDisabled(String provider) {
        String message = "GPS disabled";
        // change getApplicationContext() to mContext(inner context reference)
        Toast.makeText(mContext,
                message, Toast.LENGTH_LONG).show();
    }

    // dipanggil saat provider diaktifkan oleh pengguna
    @Override
    public void onProviderEnabled(String provider) {
        String message = "GPS enabled";
        // change getApplicationContext() to mContext(inner context reference)
        Toast.makeText(mContext,
                message, Toast.LENGTH_LONG).show();
    }

    // dipanggil saat ada perubahan status pada provider
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
    }
}
并将其设置为“活动”:

LocationListener myLocationListener = new MyLocationListener(this);
2. 您还可以使用
使用自引用。这是一种
构造。
。这个
——在Java中——是他自己的参考资料。
但如果类是静态的,则会出现编译错误。

只需使用GPSSample.this而不是getApplicationContext()。这是“外部This”,即父类的This,在本例中,它是活动(活动是上下文的子类)


如果需要移动侦听器(我不这么认为),请使用构造函数。通常,您甚至会使用匿名类,而不是侦听器的具体类。阅读起来更直接、更清晰。

您可以使用GPSSample.this它需要构造函数,很抱歉已经更新了问题。我已经把活动和听众分开了。谢谢你的回答实际上是的,我会移动听众(为了学习目的)。我只是想知道如何将上下文传递给另一个活动,这就是我问这个问题的原因。我看到了很多关于使用构造函数的解释,但我在实现它时遇到了问题,因为我对这个编程非常陌生。无论如何,谢谢你的回答。(更新的问题)是的,但通常不在侦听器中定义构造函数。这太过分了。您只需将引用与另一个传递,这通常或直接使用某种变量(或直接使用匿名类中的getContext()传递)。显然,您可以创建一个外部类,有时可能对侦听器有用,但在大多数情况下并非如此:)是的,这就是问题的关键,因为我在提问之前的解释是关于传递上下文的,它是为了学习,正如你所说的,有时可能会有用,在这种情况下,我真的很好奇它是如何工作的。我得到了新的错误:错误:(28,47)错误:MyLocationListener类中的构造函数MyLocationListener不能应用于给定的类型;必需:找到上下文:无参数原因:实际参数列表和形式参数列表长度不同错误:任务执行失败“:app:compiledBugJavaWithJavaC”。>编译失败;有关详细信息,请参见编译器错误输出。@RikudoPain您添加了构造函数吗?是的,我添加它作为您的建议,已经更新了问题(现在有您的建议)@RikudoPain,但您没有将
getApplicationContext()
替换为
McContext
@RikudoPain我想您是从web开发跳到Android的。不要为了更好的理解而寻找上下文的平行关系。实际上,上下文是允许您获取资源或类似环境数据的实体。您不需要到处传递上下文,但在本例中,您应该这样做,因为如果查看代码,您可以找到一个需要使用上下文的
Toast
类。有关上下文的更多信息: