如何制作动态片段



我有一个RSS提要,里面有很多新闻。当我去新闻想要实现左右滑动下一个和上一个新闻时这是我的片段代码:

public MyFragment(String url) {
    this.url = url;
}
@SuppressWarnings("deprecation")
@SuppressLint({ "SetJavaScriptEnabled", "InflateParams" })
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.inline_browser, null);
    ww = (WebView) v.findViewById(R.id.inlineBrowser);
    browserSettings = ww.getSettings();
    browserSettings.setPluginState(PluginState.ON);
    browserSettings.setJavaScriptEnabled(true);
    browserSettings.setDomStorageEnabled(true);
    browserSettings.setAppCacheMaxSize(1024 * 1024 * 8);
    browserSettings.setAllowFileAccess(true);
    browserSettings.setAppCacheEnabled(true);
    browserSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
    ww.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });
    ww.getSettings().setLoadsImagesAutomatically(true);
    ww.getSettings().setJavaScriptEnabled(true);
    ww.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    ww.loadUrl(url);
    return v;
}

}

以下是我介绍片段转换的代码:

@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inline_browser);
    feed = (RSSFeed) new WriteObjectFile(this).readObject(RSSUtil
            .getFeedName());
    position = getIntent().getExtras().getInt("pos");
    setTitle(feed.getItem(position).getTitle());
    browser = (WebView) findViewById(R.id.inlineBrowser);
    url = feed.getItem(position).getURL();
    browser.requestFocusFromTouch();
    browser.setInitialScale(1);
    browser.getSettings().setUseWideViewPort(true);
    fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager
            .beginTransaction();
    MyFragment fragment = new MyFragment(url);
    fragmentTransaction.add(R.id.browserFrame, fragment);
    fragmentTransaction.commit();
}

片段应该只有公共默认构造函数(没有参数)。否则,Android 将无法在必要时重新创建此片段。

因此,通常您会执行以下操作:

public MyFrag() {}
public static MyFrag newInstance(String url) {
    Bundle b = new Bundle();
    b.putString("url", url);
    MyFrag f = new MyFrag();
    f.setArgumentd(b);
    return f;
}

然后,每当需要传递的 url 时,都可以使用 MyFrag.getArguments().getString("url")

最新更新