Android:在多个活动中更新文本视图



我需要一些指示来执行以下操作:

  • 可以说我有10/20(数字没关系(。
  • 这些活动中的每一个都有一个文本视图,应该像计数器一样工作。
  • 这些活动中的每一个都有一个按钮可以进入下一个活动。
  • 当应用程序启动时,此计数器始于启动,并每秒增加自身。

所以我到目前为止所做的是:

  • 在我的主要活动中有一种实例化的方法的方法。
  • 在Run((方法中的该类中,我会在第二秒通过时增加变量。

现在我陷入了下一步该怎么办。任何指针都将不胜感激。

编辑:我需要一种从运行方法内部进行通信的方法,目前在屏幕上进行的任何活动,以更新其文本视图。

在此处为标准Object Oriented Programming的一些理论:坚持推荐的原理,例如松散耦合,这会使您的项目代码彼此不那么链接。您稍后可以阅读更多信息。

现在,使用Events,您可以设置一个自然Publisher/Subscriber设计模式代名词的系统。这样:

需要notify的活动称为Publisher,其他需要为notified的活动称为Subscribers

从这里:

已经在Android中构建和测试库事件。像我最喜欢的EventBus

步骤1 将此行添加到您的app-level build.gradle文件:

compile 'org.greenrobot:eventbus:3.0.0'

然后创建一个简单的 Plain Old Java Object aka POJO类:

public class UpdateTextViewEvent{
    private String textToShow;
    public UpdateTextViewEvent(String text){
       this.textToShow = text;
    }
    //add your public getters and setters here
}

步骤2 通知他人:

当您想通知任何人时,您只会称呼此方法:

EventBus.getDefault().post(new UpdateTextViewEvent("Some new Text"));

步骤3 接收通知

对于那些想通知此事件的人,只需这样做:

@Override
public void onStart() {
   super.onStart();
   EventBus.getDefault().register(this);
}
@Override
public void onStop() {
   super.onStop();
   EventBus.getDefault().unregister(this);
}

注意:实际处理事件:

@Subscribe
public void onEvent(UpdateTextViewEvent event){
   String text = event.getTextToShow();
   //now you can show by setting accordingly on the TextView;
}

这要容易得多,请通过消除不同活动中的static参考来使您的代码

中的参考

我希望这会有所帮助!祝你好运!

您需要做的是在计数类中,创建A方法并以TextView作为参数传递。然后创建一个int变量并将计数器设置为实例:

喜欢这个

   public static class Counter extends Thread{
        private static int x;
        @Override
        public void run(){
            x = counter;
        }
        public void setCounter(TextView tv){
            tv.setText(String.valueOf(x));
        }
    }

现在,在所有活动的onCreate()方法中,都将此方法setCounter(TextView)调用您想显示计数器的所有方法,并将布局文本视图作为参数传递。像这样

...
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState):
....
TextView cTextView = (TextView)findViewById(R.id.texT1);
Counter c = new Counter();
c.setCounter(cTextView);
}

将第二类文本视图作为

  public static Textview text;

并将其称为主要活动

  SecondActivity obj=new SecondActivity();
    obj.text.settext("");

最新更新