无法理解如何刷新/更新我的所有textview。它们位于13个不同的片段中,我无法按照自己的意愿访问它们。
在简单的Java中,我得到了一个简单的游戏循环
//Game Loop
boolean GameLoop = true;
while(GameLoop){
CG.refresh();
}
在大班上我得到了这样的东西:
void refresh() {
Labels.MoneyLabel.setText("Money: " + CarMain.main[0]);
Labels.BoxesLabel.setText("Boxes: " + CarMain.main[2]);
}
一切都奏效了。现在在Android中我无法更新我的文本视图。
在Android上,onCreate方法制作了简单的游戏循环
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
Collections();
SaveFile();
Refresh();
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
并希望刷新文本视图,例如
public void Refresh(){
TextView MoneyTXT = (TextView) rootView.findViewById(R.id.MoneyText);
MoneyTXT.setText("Money: " + Main.Money[0]);
TextView MoneyPerTapTXT = (TextView) rootView.findViewById(R.id.MoneyPerTapTView);
MoneyPerTapTXT.setText("$ " + Main.Money[1] + " per tap");
TextView BoxesTXT = (TextView) rootView.findViewById(R.id.BoxesText);
BoxesTXT.setText("Boxes: " + Main.Boxes[0]);
TextView BoxesPerTapTXT = (TextView) rootView.findViewById(R.id.BoxesPerTapTView);
BoxesPerTapTXT.setText("Points " + Main.Boxes[1] + " per tap");
}
但是得到了错误,因为Textviews位于不同的布局中。
答案 0 :(得分:0)
从活动更新片段:
假设您的片段已添加到ID为R.id.frame
的视图中,您可以执行以下操作:
// Get current Fragment
Fragment fragment = getFragmentManager().findFragmentById(R.id.frame);
if (fragment instanceof MyFragment) { //or whatever your Fragment's name is
((MyFragment) fragment).updateTextView(); // This is a method you will have to define yourself
}
这有意义吗?
答案 1 :(得分:0)
如果您不想处理via方法回调机制,可以使用第三方库(如GreenRobot EventBus)尝试事件回调机制。
简单的例子,
定义事件:
public static class MessageEvent { /* Additional fields if needed */ }
准备订阅者:(订阅您的活动以接收活动) 声明并注释您的订阅方法,可选择指定线程模式:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
注册并取消注册您的订阅者。例如,在Android上,活动和片段通常应根据其生命周期进行注册:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
发布活动:(点击活动后点击片段按钮,会立即通知活动)
EventBus.getDefault().post(new MessageEvent());