我不知道这是我的应用程序结构的问题还是我的代码的问题。
我有一个扩展 SherlockFragmentActivity 的 tabActivity。
这有一个 ViewPager 和一个 TabsAdapter。
有两个选项卡和一个选项菜单项(“搜索”)。
这两个选项卡用于输入搜索参数。一份简单,一份详细。如果单击搜索,则执行搜索并显示结果。
选项卡的内容已经是 SherlockFragment 类型的对象。到目前为止,这工作正常。
目前,搜索结果是一个单独的活动。我也希望将它们放在 viewpager 中。所以我将它转换为一个 SherlockActivity。但是,如果我在 onCreate() 方法中制作(“this”是 tabActivity):
FragmentManager fm = this.getSupportFragmentManager();
Fragment ft = Fragment.instantiate(this, searchFragment.class.getName(), null);
if(fm.findFragmentById(R.id.searchresults_content) == null)
{
fm.beginTransaction().add(R.id.searchresults_content, ft).commit();
}
接着:
this.mViewPager.addView(ft.getView());
但ft.getView();
返回空值。searchFragment 中的 OnCreateView 将执行此操作:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
WebView mWebView = (WebView)findViewById(R.id.search_results);
View mView = inflater.inflate(R.layout.search_results, container, false);
mWebView.setWebViewClient(new SearchResultsWebViewClient());
//... (load data for webview etc...)
return mView;
}
search_results.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id ="@+id/search_results"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</WebView>
</LinearLayout>