Android的toast.makeText方面的错误 [英] Android toast.makeText context error
本文介绍了Android的toast.makeText方面的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法调用toast.Maketext位置监听器内。上下文是不可用,我究竟做错了什么?
私人LocationListener的LL =新LocationListener的(){ 公共无效onLocationChanged(位置L){
// SMSReceiver.l = 1;
字符串s =;
S + =\\ 970 12:+ l.getTime()+\\ n;
S + =\\ tLatitude:+ l.getLatitude()+°\\ N的;
S + =\\ tLongitude:+ l.getLongitude()+°\\ N的;
S + =\\ tAccuracy:+ l.getAccuracy()+米\\ N的;
S + =\\ tAltitude:+ l.getAltitude()+米\\ N的;
S + =\\ tSpeed:+ l.getSpeed()+米\\ N的; // TODO自动生成方法存根
如果(l.hasSpeed()){
myspeed的= l.getSpeed();
} Log.i(DEBUG_TAG,在当前位置更改:(+ S +));
ERROR这里 - > Toast.makeText(上下文,S,Toast.LENGTH_SHORT).show();
} 公共无效onProviderDisabled(字符串为arg0){
// TODO自动生成方法存根 } 公共无效onProviderEnabled(字符串为arg0){
// TODO自动生成方法存根 } 公共无效onStatusChanged(字符串为arg0,ARG1 INT,捆绑ARG2){
// TODO自动生成方法存根 }};
解决方案
如果这个 LocationListener的
的声明是一个活动类中(例如: MyActivity
),你应该创建吐司
为:
Toast.makeText(MyActivity.this,S,Toast.LENGTH_SHORT).show();
在情况下, LocationListener的
在无环境类被声明,就像在你的情况下,广播接收器
,你可以通过上下文给它的构造:
私人最后一类MyReceiver扩展广播接收器
{
私人MyLocationListener侦听器;
公共MyReceiver(最终上下文的背景下)
{
this.listener =新MyLocationListener(背景);
} 私人final类MyLocationListener实现LocationListener的
{
私人上下文的背景下;
公共MyLocationListener(最终上下文的背景下)
{
this.context =背景;
} @覆盖
公共无效onLocationChanged(地点)
{
// ...
Toast.makeText(背景下,这里面包消息,Toast.LENGTH_SHORT).show();
} //实现的方法,其余
} @覆盖
公共无效的onReceive(上下文的背景下,意图意图)
{
//请注意,您在这里有一个背景下,您可以收到广播消息时使用
}
}
I am having trouble calling toast.Maketext inside of a location listener. The context is not available, what am I doing wrong?
private LocationListener ll = new LocationListener() {
public void onLocationChanged(Location l) {
// SMSReceiver.l = l;
String s = "";
s += "\tTime: " + l.getTime() + "\n";
s += "\tLatitude: " + l.getLatitude() + "°\n";
s += "\tLongitude: " + l.getLongitude() + "°\n";
s += "\tAccuracy: " + l.getAccuracy() + " metres\n";
s += "\tAltitude: " + l.getAltitude() + " metres\n";
s += "\tSpeed: " + l.getSpeed() + " metres\n";
// TODO Auto-generated method stub
if (l.hasSpeed()) {
mySpeed = l.getSpeed();
}
Log.i(DEBUG_TAG, "On Location Changed: (" + s + ")");
ERROR HERE--> Toast.makeText(context, s, Toast.LENGTH_SHORT).show();
}
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
};
解决方案
If this LocationListener
declaration is inside an activity class (say: MyActivity
), you should create the Toast
as:
Toast.makeText(MyActivity.this, s, Toast.LENGTH_SHORT).show();
In case the LocationListener
is declared in a contextless class, like in your case a BroadcastReceiver
, you can pass the context to its constructor:
private final class MyReceiver extends BroadcastReceiver
{
private MyLocationListener listener;
public MyReceiver(final Context context)
{
this.listener = new MyLocationListener(context);
}
private final class MyLocationListener implements LocationListener
{
private Context context;
public MyLocationListener(final Context context)
{
this.context = context;
}
@Override
public void onLocationChanged(Location location)
{
// ...
Toast.makeText(context, "Toast message here", Toast.LENGTH_SHORT).show();
}
// implement the rest of the methods
}
@Override
public void onReceive(Context context, Intent intent)
{
// Note that you have a context here, which you can use when receiving an broadcast message
}
}
这篇关于Android的toast.makeText方面的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文