gpt4 book ai didi

android如何让监听器自定义变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:31 24 4
gpt4 key购买 nike

我看过这个帖子:How to implement a listener关于实现监听器。

它实际上非常简单,但我不知道它究竟是如何完成的以及如何在我自己的代码中实现。

我有这个静态变量:AppLoader.isInternetOn。我想构建一个监听器,它将监听此变量更改并更新 TextView。

我应该这样做吗?

构建一个界面:

public interface InternetStateListener {
public void onStateChange();
}

在我的 Activity 中运行它:

public class MyActivity extends Activity {
private InternetStateListener mListener;

setTheListener(this);

public void setTheListener(InternetStateListener listen) {
mListener = listen;
}

private void onStateChange() {
if (mListener != null) {
if (AppLoader.isInternetOn)
text.setText("on")
else
text.setText("off")
}
}
}

最佳答案

您的 Activity 没有做任何特别的事情,只是向提供监听器的 Other 类注册自己(因为接口(interface)直接在类中实现)。

public class MyActivity extends Activity implements InternetManager.Listener {

private TextView mText;
private InternetManager mInetMgr;

/* called just like onCreate at some point in time */
public void onStateChange(boolean state) {
if (state) {
mText.setText("on");
} else {
mText.setText("off");
}
}

public void onCreate() {
mInetMgr = new InternetManager();
mInetMgr.registerListener(this);
mInetMgr.doYourWork();
}
}

另一个类必须完成几乎所有的工作。除此之外,它必须处理监听器的注册,一旦发生某些事情,它必须调用 onStateChange 方法。

public class InternetManager {
// all the listener stuff below
public interface Listener {
public void onStateChange(boolean state);
}

private Listener mListener = null;
public void registerListener (Listener listener) {
mListener = listener;
}

// -----------------------------
// the part that this class does

private boolean isInternetOn = false;
public void doYourWork() {
// do things here
// at some point
isInternetOn = true;
// now notify if someone is interested.
if (mListener != null)
mListener.onStateChange(isInternetOn);
}
}

关于android如何让监听器自定义变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9879780/

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