gpt4 book ai didi

java - 从类中调用 Activity

转载 作者:行者123 更新时间:2023-12-02 11:54:05 26 4
gpt4 key购买 nike

在我的应用程序中,有一个 Activity 类和一个辅助类。 Activity 类可以访问显示分数的 TextView。 Helper类需要定期更新activity类中的score。

public class MainActivity extends Activity
{
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);

textView = (TextView) findViewById(R.id.textView);
Helper helper = new Helper();
}

void updateScore(int score)
{
textView.setText(score + "");
}

/* ... */
}

public class Helper
{
int score = 0;

void updateScore()
{
// what to do here?
}
}

我找到了两种方法来做到这一点,但它们都不是很好。一种方法是将 Activity 实例传递给辅助类。另一种方法是将 TextView 声明为静态。然而,两者都容易出现内存泄漏。有更好的方法吗?

最佳答案

您可以通过使用接口(interface)来实现

public class MainActivity extends Activity implements MainActivity.Callback {
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);

textView = (TextView) findViewById(R.id.textView);
Helper helper = new Helper(this);
}

@Override
void updateScore(int score) {
textView.setText(score + "");
}

interface Callback {
void updateScore(int score);
}

/* ... */
}

public class Helper {
int score = 0;
Callback callback;

public Helper(Callback callback){
this.callback = callback;
}

void updateScore() {
callback.updateScore(score);
}
}

当您从辅助类调用 updateScore 时,它​​将从 Activity 调用 updateScore 并将分数传递给它,您可以更新 MainActivity 中的 TextView。

关于java - 从类中调用 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com