从 Activity 传递上下文
Pass Context from Activity
好吧,直截了当我是这个 android 编程的初学者,由于 "cant resolve method getapplicationcontext"[=15=,我对如何从我的 activity 传递上下文有疑问]
这是 MyLocationListener.java :
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;
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}
// Dipanggil saat provider dinon-aktifkan oleh pengguna
@Override
public void onProviderDisabled(String provider) {
String message = "GPS disabled";
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}
// dipanggil saat provider diaktifkan oleh pengguna
@Override
public void onProviderEnabled(String provider) {
String message = "GPS enabled";
Toast.makeText(getApplicationContext(),
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
}
}
这是我的 activity (GPSSample.java) :
public class GPSSample extends Activity {
/** Called when the activity is first created. */
@Override
LocationListener myLocationListener = new MyLocationListener(this);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Inisiasi LocationManager dan LocationListener
LocationManager myLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener myLocationListener = new MyLocationListener();
myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener);
}
上面说要用constructor传,怎么传?
我有一些构造函数示例,但我不知道把它放在哪里,并根据我的脚本重命名它
MyClass myClass = new MyClass(this);
然后在 class 中创建一个接受 Context 作为参数的构造函数并使用它
public class MyClass
{
Context c;
public MyClass(Context context)
{
c= context;
}
}}
感谢您的帮助...
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
}
}
并在 Activity 中设置:
LocationListener myLocationListener = new MyLocationListener(this);
2
您也可以使用 .this
构造来使用自引用。
.this
- 在 Java - 是他自己的参考。
但是如果 class 是静态的——你会得到编译错误。
只需使用 GPSSample.this 而不是 getApplicationContext()。这是 "outer this",即父 class 的 this,在这种情况下,是 activity(并且 activity 是子 class上下文)。
如果您需要移动侦听器(我不这么认为),请使用构造函数。通常你甚至会使用匿名 classes 而不是具体的听众。阅读起来更直接清晰。
好吧,直截了当我是这个 android 编程的初学者,由于 "cant resolve method getapplicationcontext"[=15=,我对如何从我的 activity 传递上下文有疑问]
这是 MyLocationListener.java :
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;
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}
// Dipanggil saat provider dinon-aktifkan oleh pengguna
@Override
public void onProviderDisabled(String provider) {
String message = "GPS disabled";
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}
// dipanggil saat provider diaktifkan oleh pengguna
@Override
public void onProviderEnabled(String provider) {
String message = "GPS enabled";
Toast.makeText(getApplicationContext(),
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
}
}
这是我的 activity (GPSSample.java) :
public class GPSSample extends Activity {
/** Called when the activity is first created. */
@Override
LocationListener myLocationListener = new MyLocationListener(this);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Inisiasi LocationManager dan LocationListener
LocationManager myLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener myLocationListener = new MyLocationListener();
myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener);
}
上面说要用constructor传,怎么传? 我有一些构造函数示例,但我不知道把它放在哪里,并根据我的脚本重命名它
MyClass myClass = new MyClass(this);
然后在 class 中创建一个接受 Context 作为参数的构造函数并使用它
public class MyClass
{
Context c;
public MyClass(Context context)
{
c= context;
}
}}
感谢您的帮助...
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
}
}
并在 Activity 中设置:
LocationListener myLocationListener = new MyLocationListener(this);
2
您也可以使用 .this
构造来使用自引用。
.this
- 在 Java - 是他自己的参考。
但是如果 class 是静态的——你会得到编译错误。
只需使用 GPSSample.this 而不是 getApplicationContext()。这是 "outer this",即父 class 的 this,在这种情况下,是 activity(并且 activity 是子 class上下文)。
如果您需要移动侦听器(我不这么认为),请使用构造函数。通常你甚至会使用匿名 classes 而不是具体的听众。阅读起来更直接清晰。