我们采取了以下措施:
我们有一个片段,例如:InboxFragment,它有一个所有消息的列表视图。
在InboxFrgament中,加载时我们调用web服务,使用web服务调用从云检索最新消息:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_inbox, container, false);
context = getActivity();
//Get Messages From Cloud - web service call
if (ON_BACK_PRESSED == 0) {
GetMessagesFromCloud();
}
}
当您点击消息时,我们会向堆栈中添加一个新的片段MessageDetailsFragment。我们使用以下函数添加一个新片段:
public void AddFragmentToStack(Fragment newFragment, String tag) {
FragmentTransaction ft = this.getSupportFragmentManager()
.beginTransaction();
ft.replace(R.id.content_frame, newFragment, tag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
现在这个工作正常了。但当我们点击设备返回按钮时(当我们在MessageDetailsFragment上时),它会将我们带回到InboxFragment,并再次调用onCreateView函数,因为会向服务器发出获取新消息的web服务调用。
我们不希望每次回击MessageDetailsFragment时都发生此web服务调用。我们在InboxFragment中实现了下拉刷新,这是下载任何新消息的事件。因此,在加载MessageDetailsFragment时,我们在_BACK_PRESSED=1上设置了一个标志,在InboxFragment中,如果该标志设置为1,则不进行web服务调用GetMessagesFromCloud()。
我们想知道上面是否是禁止web服务调用的正确方法,因为当片段出现时总是调用onCreateView。请告知。
据我们所知,当在iOS平台上完成相同的实现时,回击时,视图中的片段会弹出,后面的片段会出现。当您回击时,Web服务调用并不是每次都进行的,因为在didViewLoad事件中调用了Web服务。他们有2个事件-didViewLoad和didViewEmerar。因此,当他们回击时,在没有进行服务调用的地方调用了DIDViewEmerar,并且没有调用DIDViewLoad。
非常感谢。
将响应存储在对象中并检查其空值。
ResponseObject mResponse;//your response data type
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_inbox, container, false);
context = getActivity();
//Get Messages From Cloud - web service call
if (mResponse == null) {
GetMessagesFromCloud();
} else {
//update UI
}
}
//your response callback. I am not sure what are your callbacks so its just a hint
public void onSucess(ResponseObject response) {
mResponse = response;
}
我在弄清楚碎片是如何工作的。我有3个类,MainActivity,Fragment1和fragment2。 MainActivity扩展了 Fragment2还扩展了SherlockFragment,但什么也不做,将它膨胀为空。xml
我想从片段到活动使用返回按钮使用工具栏返回图标。 碎片是我的抽屉菜单项 我该怎么做?
我的中有10个选项卡。打开活动后,第一个片段就会显示出来,但下一个片段中的方法(AsyncTask)会被调用。如果我转到下一个选项卡,比如第3个选项卡,那么将调用第4个中的方法,依此类推。 我不理解这种行为。请救命!
我正试着从后面取回碎片。它正在被检索,但问题是在按下后退按钮时,当前片段的oncreate视图和后续lifecyce方法也会被调用。下面是我将片段放入backbackback的代码: 以下是片段的代码:
问题内容: 我很难找到有关如何使用Android调用标准SOAP / WSDL Web服务的良好信息。我所能找到的只是非常复杂的文档和对“ kSoap2”的引用,然后是一些有关使用SAX手动解析它们的内容。好的,很好,但是是2008年,所以我认为应该有一些好的库来调用标准Web服务。 Web服务基本上只是在NetBeans中创建的一种。我希望IDE支持生成管道类。我只需要最简单/最优雅的方法就可以
我在Scala上使用Play 2.5,我创建了一个类,可以多次调用外部web服务。 外部Web服务在某些条件下被调用并得到ok或nok的简单响应。如果可以,那么我应该更新内部对象状态,如果可以,我现在什么也不做。 这是我的类,它将String的列表作为参数,并返回要在控制器中处理的对象的Future列表。 是列表类型的列表,但我希望它只是一个简单的响应列表。 1)如何简化和纠正我的代码以获得响应列