我需要做一些关于执行以下操作的建议:
所以我到目前为止所做的是:
现在我坚持下一步应该做的事情。任何指针都将不胜感激。
编辑:我需要一种方法从run方法内部到现在当前在屏幕上的任何活动进行通信,以更新其textview。
答案 0 :(得分:1)
对于标准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
又名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
引用来解耦代码
我希望这有帮助!祝你好运!
答案 1 :(得分:0)
将第二课中的Textview设为
public static Textview text;
并在主要活动中将其称为
SecondActivity obj=new SecondActivity();
obj.text.settext("");
答案 2 :(得分:0)
您可以创建另一个活动,例如BaseActivity随Activity类扩展,您的所有10/20活动都使用创建的BaseActivity类扩展。
您可以将文本视图与protected
访问说明符一起使用。
答案 3 :(得分:0)
您需要做的是在柜台类内部,创建一个方法并传入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));
}
}
现在在您要显示计数器的所有活动的setCounter(TextView)
方法中调用此方法onCreate()
,并将布局TextView作为参数传递。喜欢这个
...
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState):
....
TextView cTextView = (TextView)findViewById(R.id.texT1);
Counter c = new Counter();
c.setCounter(cTextView);
}