我需要一些指示来执行以下操作:
- 可以说我有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("");