我有一个活动,其中有一个文本视图。我还使用了一个有一些事件的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);
-
在活动中实现接口,在那里您可以对值进行分级,并可以在文本视图中进行设置。