0

我有一个关于从不是 Activity 子类的类中设置 TextView 的问题。该类主要用于处理与 3rd 方服务器的注册和 REST 请求。

从第 3 方服务器获取文本字段信息后,在 Main Activity 中设置 TextView 为时已晚。

  • 我不能使用 SharedPreferences 来设置这个信息,因为 MainActivity 已经开始了。
  • 我无法通过 Bundle 传递此信息,因为我的 java 类不是活动类。

如何传递此信息并在 MainActivity 中设置 TextView?有没有办法做到这一点?

4

3 回答 3

2

这样做的正确方法是创建一个侦听器。

创建接口:

public interface OperationCompletedListener{
void onOperationCompleted(String resultValue);
}

然后在调用 Rest 服务的类中,为此侦听器创建一个变量并设置它的方法。

private OperationCompletedListener mListener;

public void setOperationCompletedListener(OperationCompletedListener listener){
mListener=listener;
}

然后,当您的休息服务完成呼叫时,如下所示:

if(mListener!=null){
mListener.onOperationCompleted("your value to be passed");
}

然后在包含 TextView 的活动类中,创建一个 OperationCompletedListener 对象,并使用我们之前创建的 set 方法将其设置为另一个类。然后在 onOperationCompleted 方法中,用你的值设置文本视图,你就完成了。

private OperationCompletedListener mOperationCompletedListener=new OperationCompletedListener() {

    @Override
    public void onOperationCompleted(String resultValue) {
        yourTextView.setText(resultValue);
    }
};

restServiceClassObject.setOperationCompletedListener(mOperationCompletedListener);
于 2012-11-21T08:08:42.617 回答
0

您可以创建一个静态方法来更新您的活动类中的文本视图。然后随时从您的其他班级调用此方法。

于 2012-11-21T07:57:31.653 回答
0

实例化时尝试将其传递Activity给非。Activity class例如:

public class NonActivityClass {
    private Activity parentActivity;
    public NonActivity(Activity parentActivity) {
        this.parentActivity = parentActivity;
    }
}

或者,如果您不想实例化它(它是) ,您可以将它传递Activity给您的静态方法。然后,您可以从父级充气或执行 a并设置文本。NonActivityClassabstractTextViewfindViewById

根据我的经验,您永远不应该使用静态非最终变量来维护跨活动的引用。当您重新启动应用程序或手机时,或者当 Android 杀死您的应用程序的进程时,变量的引用和状态会丢失,并可能导致您的应用程序崩溃。

于 2012-11-21T08:15:21.000 回答