在我的代码中,我想在片段中显示一些字符串,而method getPlayerList则需要2秒(来自API的数据(,但是方法'oncreateview'是在'之前返回视图'之前'getPlayerList'完成执行。
我试图以多种方式实施它,但是每件事都是没有用的,因为我无法更改"返回视图";放置^^"。
有没有适合我情况的方法而不是" onCreateview"?
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_tab4, container, false);
String result = getPlayerList();
//displaying the 'result' on this view
return view; }
因此,正如我所看到的:您的问题是结果变量尝试使用时没有任何值?如果是这样,请仅在完成API调用后考虑使用该变量,以便您的用户不必等待2秒(或在某些情况下更多(。您可以添加progressbar,以指示您的用户正在进行中。
不要请求并在主线程中等待。首先,将该视图变量作为字段而不是本地保留。然后将您的请求移至onViewCreated
方法。最后使用回调而不是返回值,并在后台线程中执行所有请求。您可以将凌空或改造用于高级网络。还因为您必须等到从服务器中获得占位符的UI的结果,然后将其设置为空字符串。
从Google中查看MVP结构中的此示例。在方法中创建的视图,但以后在另一种方法中设置了UI的值。例如,请参见设置描述文本视图的showDescription
方法https://github.com/googlesamples/android-Architecture/blob/todo-mvp/todoapp/src/src/main/java/java/java/java/com/com/example/android/androad/architect-/blueprints/todop.-taskdetail/taskdetail/taskdetail/taskdeatail/taskdetailfaskdetailfragment.jjava-jjava-jjjava-jjjjava-jjjava-jjjava-jjjava-jjjjavalep.p.p.p.p.>
也有关回调,请参见Retroift中的此public void success
方法。https://futurestud.io/tutorials/retrofit-getting-started-and-and-android-client
您可以在方法中获得值,并且可以使用视场设置该值。