我想在消息处理程序中通过Toast
创建一些文本,我的消息处理程序在单独的类中声明。
public class HandlerAlert extends Handler {
final static byte IP_OK=0;
final static byte IP_WRONG=-1;
Context ctx;
public HandlerAlert(Context ctx) {
super();
this.ctx=ctx;
}
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case IP_OK:
if (msg.arg1==(CheckSendMode.REGULAR).ordinal())
{
Toast.makeText(ctx/*null*/,
"OK",Toast.LENGTH_LONG).show();
Log.i("MessageOk",ctx.getClass().getName());
}
........
我有两个活动,都可以调用此消息。我希望我的Toast.MakeText
会在使用上下文(参数ctx
)的活动中产生输出。但是,尽管通过ctx
,我仍然看到两个活动中的输出。在Context ctx
中观察到Log.i("MessageOk",ctx.getClass().getName());
中传递的活动的名称我认为Toast.MakeText
在所有活动中都有效,尽管有上下文,甚至测试了空上下文(获得了绝对预期的异常)。
我的问题如下:Toast.MakeText
是否在当前打开的活动中发送输出?如有必要,我已准备好提供任何代码部分。
提前致谢。
答案 0 :(得分:0)
创建一个ShowToast类 在该类中创建一个方法
public Class ShowToast{
Context mContext;
public void displayToast(String msg){
Toast.makeText(mContext,msg,Toast.LENGTH_LONG).show();
}
在您的活动中
ShowToast dispToast = new ShowToast(this);
btn.setOnClickListener(new View.OnClickListener(){
publiv void onClick(View v){
dispToast.showToast("Hello World");
}
});
答案 1 :(得分:-1)
这只是假设:我认为实际上toast
使用的是应用程序上下文,而不是活动1。我试试了
Toast.makeText(ctx.getApplicationContext()," OK",Toast.LENGTH_LONG)。show();
它就好像它是活动上下文一样。顺便说一句,
Log.i("MessageOk",ctx.getApplicationContext().getClass().getName());
生成类android.app.Application
。请确认或否认我的假设。