【发布时间】:2015-05-12 11:01:28
【问题描述】:
我正在尝试在处理程序片段类中使用 Toast 消息,但我无法访问主类的上下文。处理程序与主要活动 PlayFrets(也是 UI 线程)在同一个类中。我已经阅读了有关 stackoverflow 上有关此主题的大量问题,但几乎每个解决方案都涉及传递 getActivity() 或 getActivity() .getApplicationContext() 进入 Toast 的上下文字段。当我尝试这个时,我得到了错误
以下是相关代码:
public class PlayFrets extends Activity {
.
.
.
static Handler mHandler = new Handler(Looper.getMainLooper()){
public void handleMessage(final Message msg){
if(msg.obj != null){
runOnUiThread(new Runnable() {
public void run() {
//error happens here on Toast message
Toast.makeText(getActivity(), "Background Thread sent "+ msg.what + " bytes: " + msg.obj,Toast.LENGTH_SHORT).show();
}
});
}
else{
}
}
};
}
这些是我传递上下文和每个变体产生的错误的尝试。
Toast.makeText(PlayFrets.this.getActivity()...)
^^^PlayFrets 类型的 getActivity() 方法未定义
Toast.makeText(PlayFrets.this...)
^^^PlayFrets 类型的封闭实例在范围内是不可访问的
Toast.makeText(getActivity().getApplicationContext()...)
^^^new Runnable(){}类型的getActivity()方法未定义
将主要活动的上下文传递到处理程序片段以在 Toast 消息中使用的正确方法是什么?
【问题讨论】:
标签: android-fragments handler android-context android-toast