java如何与来自不同类的UI交互
我想从其他类更新我的UI。我熟悉runOnUiThread()
方法,但不知道如何在这个场景中实现它
public class UploadAct extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload);
}
//my code and functions would go here
}
然后,我的UploadData类
public class UploadData extends UploadAct {
public void doSomethig(){
printThis("I want to print this message to the UI");
}
public void printThis(String messsage) {
final String mess = message;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),mess,Toast.LENGTH_LONG).show();
// I want this to display on the main thread
txt_upload.setText(mess);// and this also
}
});
}
}
# 1 楼答案
每个人都会使用太多的库来成为时尚,因为他们忘记了Android中的内置功能:)
当然,使用
AsyncTask
并不难,除了它提供了doInBackground
函数之外,它还提供了https://developer.android.com/reference/android/os/AsyncTask.html#publishProgress(Progress...)函数,这是您所要求的只需创建一个类(UploadTask),它扩展AsyncTask并重写1-2函数
# 2 楼答案
首先,没有像某个类的UI这样的东西。有些活动可以处理UI小部件(例如TextView)。如果您想从UploadData类对UI进行一些更改,您必须以某种方式传递对该类的引用。可能由建造商:
我假设您在MainActivity中创建了DataUpload
# 3 楼答案
使用
BroadcastReceiver
# 4 楼答案
你也可以使用一个界面来更新你的用户界面作为一个监听器
首先,创建一个接口
然后,在UploadData类中调用它的方法
然后,通过听这个方法更新你的UploadAct