Android 如何从另一个类设置TextView(不扩展到Activity.class)

Android 如何从另一个类设置TextView(不扩展到Activity.class),android,Android,我在设置不是活动子类的类的TextView时遇到问题。此类主要用于处理第三方服务器的注册和REST请求 从第三方服务器获取textfield信息后,在主活动中设置TextView为时已晚 我无法使用SharedReferences设置此信息,因为MainActivity已启动 由于我的java类不是活动类,因此无法将此信息与包一起传递 如何在MainActivity中传递此信息并设置TextView?有什么方法可以做到这一点吗?您可以创建一个静态方法来更新活动类中的textview。然后随时

我在设置不是活动子类的类的TextView时遇到问题。此类主要用于处理第三方服务器的注册和REST请求

从第三方服务器获取textfield信息后,在主活动中设置TextView为时已晚

  • 我无法使用SharedReferences设置此信息,因为MainActivity已启动
  • 由于我的java类不是活动类,因此无法将此信息与包一起传递

如何在MainActivity中传递此信息并设置TextView?有什么方法可以做到这一点吗?

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

正确的方法是创建一个侦听器

创建一个接口:

public interface OperationCompletedListener{
void onOperationCompleted(String resultValue);
}
然后在调用Rest服务的类中,为这个侦听器创建一个变量和一个方法来设置它

private OperationCompletedListener mListener;

public void setOperationCompletedListener(OperationCompletedListener listener){
mListener=listener;
}
然后,当您的rest服务完成时,按如下方式呼叫:

if(mListener!=null){
mListener.onOperationCompleted("your value to be passed");
}
然后在包含TextView的activity类中,创建OperationCompletedListener对象,并使用前面创建的set方法将其设置为另一个类。然后在onOperationCompleted方法中,使用您的值设置文本视图,就完成了

private OperationCompletedListener mOperationCompletedListener=new OperationCompletedListener() {

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

restServiceClassObject.setOperationCompletedListener(mOperationCompletedListener);

实例化时,尝试将
活动
传递给非
活动类
。例如:

public class NonActivityClass {
    private Activity parentActivity;
    public NonActivity(Activity parentActivity) {
        this.parentActivity = parentActivity;
    }
}
或者,如果不想实例化它(它是
抽象的
),可以将
活动
传递给
非活动类
中的静态方法。然后,您可以对
TextView
进行充气,或者从父级执行
findViewById
并设置文本


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

如果不查看实际实现,很难提供解决方案。请参阅本文尝试将textView用作静态并使用MainActivity.textView.setText(“测试”);当您在这个特定的类中调用该方法时,它是否返回任何数据?一种方法是在方法中的数据准备就绪时发送广播,并且您必须创建一个扩展receiver的类,并且必须重写onReceive()在该方法上,您可以创建Intent并将该字符串作为Intent传递给Activity,在Activity上,您可以在TextView中设置数据;呼叫你能帮忙吗?那应该在你的活动类中,包含文本视图。