android开发中怎么实现当一个全局变量改变后触发某个事件,然后实现用toast显示这个变量值。
3个回答
展开全部
按您的问题描述,我觉得你可能想要实现类似观察者模式代码。
给个观察者简单例子,希望对您有帮助:
import java.util.List;
import android.widget.Toast;
/**
*
* 观察者接口
*
*/
interface IObserver{
public void notify(Var v);
}
/**
*
* 要观察的变量
*
*/
class Var {
private int var;
private List<IObserver> obs= new ArrayList<IObserver>();
/**
* 注册观察者
* @param ob
*/
public void registerObserver(IObserver ob){
obs.add(ob)''
}
public void setVar(int var){
this.var = var;
/**
* 变量改变,通知所有观察者
*/
for (IObserver ob : obs) {
obs.notify();
}
}
public int getVar(){
return var;
}
}
/**
*
* 观察者
*
*/
class Test1 implements IObserver{
@Override
public void notify(Var v) {
Toast.makeText(context, "test1"+v.getVar(), Toast.LENGTH_LONG);
}
}
class Test2 implements IObserver{
@Override
public void notify(Var v) {
Toast.makeText(context, "test2"+v.getVar(), Toast.LENGTH_LONG);
}
}
public class Main{
public static void main(Strings[] arg){
Var v = new Var();
Test1 test1 = new Test1();
Test2 test2 = new Test2();
v.registerObserver(test1);
v.registerObserver(test2);
v.setVar(0);
}
}
给个观察者简单例子,希望对您有帮助:
import java.util.List;
import android.widget.Toast;
/**
*
* 观察者接口
*
*/
interface IObserver{
public void notify(Var v);
}
/**
*
* 要观察的变量
*
*/
class Var {
private int var;
private List<IObserver> obs= new ArrayList<IObserver>();
/**
* 注册观察者
* @param ob
*/
public void registerObserver(IObserver ob){
obs.add(ob)''
}
public void setVar(int var){
this.var = var;
/**
* 变量改变,通知所有观察者
*/
for (IObserver ob : obs) {
obs.notify();
}
}
public int getVar(){
return var;
}
}
/**
*
* 观察者
*
*/
class Test1 implements IObserver{
@Override
public void notify(Var v) {
Toast.makeText(context, "test1"+v.getVar(), Toast.LENGTH_LONG);
}
}
class Test2 implements IObserver{
@Override
public void notify(Var v) {
Toast.makeText(context, "test2"+v.getVar(), Toast.LENGTH_LONG);
}
}
public class Main{
public static void main(Strings[] arg){
Var v = new Var();
Test1 test1 = new Test1();
Test2 test2 = new Test2();
v.registerObserver(test1);
v.registerObserver(test2);
v.setVar(0);
}
}
展开全部
使用这个全局变量的时候用方法, 如:
package ...
import ...
public class Global{
private static int n = 0;
public static int getN(){
return n;
}
public static void setN(Context context, int m){
n = m;
Toast.makeText(context, String.format("n = %d", n), 1000).show();
}
}
package ...
import ...
public class Global{
private static int n = 0;
public static int getN(){
return n;
}
public static void setN(Context context, int m){
n = m;
Toast.makeText(context, String.format("n = %d", n), 1000).show();
}
}
更多追问追答
追问
你好,请问我这句语句:
String Z=“你好”;其中Z是被赋值的变量,我想要在不继承activity的情况下用toast显示Z,该怎么使用你上述的setN(Context context,int m)这个函数?
追答
你把n的类型改成String型的就可以了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在变量值改变的时候 调用 toast
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询