在Android Java中,Message sendToTarget是否有访问活动内部类中的View的替代方案



我有一个活动,其中有一个文本视图。我还使用了一个有一些事件的sdk。在这些事件中,我需要在TextView中显示一些数据。事件在一个外部类中,我通过一些接口获得了它们。接口是在活动中实现的。我正在使用Handler和Message将文本设置到接口实现中的TextView中。我想知道除了Handler和Message之外,是否还有其他方法可以在接口中设置文本。

这是代码:

public class MyActivity extends AppCompatActivity {
private TextView nameTextView;
// some code

// implementing interfaces of external class
Service.ServiceEvents events = new Service.ServiceEvents() {

@Override
public void onSomeEvent(String name) {
nameTextView.setText(name); // not working
Message m = myHandler.obtainMessage(0, nameTextView);
m.sendToTarget();
}

Handler myHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message message) {
String s = message.obj.toString();
nameTextView.setText(s);
}
};
}
} // end of activity

有其他方法可以在TextView中设置文本吗?请帮忙。

使用什么


您可以通过使用接口来完成。

如何实施


  • 创建一个新的interface并为其命名。(这里是SampleInterface(。

  • 添加一些无效的方法来像这个

    void onSomeEvent(String name);
    
  • 在从sdk获取数据的类中创建它的对象,并在其构造函数中添加此侦听器。像这样的

    public YourJavaClassName(SampleInterface sampleInterface) {
    this.sampleInterface= sampleInterface;
    }
    
  • 当你在sdk中收到更新时,你可以这样称呼它

    void onDataReceived(String name){// I don't know how you get the value from the sdk so I wrote this
    sampleInterface.onSomeEvent(name);
    }
    

您已经完成了在sdk接收器类中实现它的工作。现在,您需要添加到主活动中以接收和更新数据。

  • 创建从sdk接收数据的类的对象。像这个

    MySDKReceiverClass mysdkreceiverclass;
    mysdkreceiverclass = new MySDKReceiverClass(this);
    
  • 在活动中实现接口,在那里您可以对值进行分级,并可以在文本视图中进行设置。

注意:您不需要添加任何可运行的或处理程序或任何东西。每当值发生更改时,都会调用侦听器并设置值

最新更新