我已动态创建了操作栏和标签。我已经为tab片段定义了一个类,如下面的代码。
public static class TabFragmentClass extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
try
{
linearLayout=new LinearLayout(sActiveContext);
linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
linearLayout.setOrientation(LinearLayout.VERTICAL);
CustomWebView webview=new CustomWebView(sActiveContext);
FrameLayout layout=webview.createwebview();
for (int i = 0; i < arrayList.size(); i++) {
if(sActionBar.getSelectedTab().getPosition()==i)
{
webview.initwebview(arrayList.get(i));
mWebViewList.add(i, webview);
break;
}
}
linearLayout.addView(layout);
linearLayout.setId(sActionBar.getSelectedTab().getPosition());
return linearLayout;
}
catch(Exception error)
{
System.out.println(error.getMessage());
return null;
}
}
}
url是具有自己的本机java方法调用的本地html文件。如果我选择操作栏标签第一次,则正常。这是正确调用本机java方法并且回调是成功的。如果我第二次访问选项卡,则仅显示片段,不会重新创建选项卡内容。 我需要每次都不创建标签内容的功能。但我面临的问题是本机方法没有定义错误。这就是本机方法根本不被调用。我该如何解决这个问题?
答案 0 :(得分:1)
将您的片段更改为此
public static class TabFragmentClass extends Fragment
{
private static CustomWebView webview=null;
private static boolean isInitialized=false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
try
{
linearLayout=new LinearLayout(sActiveContext);
linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
linearLayout.setOrientation(LinearLayout.VERTICAL);
webview=new CustomWebView(sActiveContext);
FrameLayout layout=webview.createwebview();
onLoadWebview();
linearLayout.addView(layout);
linearLayout.setId(sActionBar.getSelectedTab().getPosition());
return linearLayout;
}
catch(Exception error)
{
System.out.println(error.getMessage());
return null;
}
}
@Override
public void onActivityCreated()
{
super.onActivityCreated();
isInitialized=true;
}
@Override
public void onResume()
{
if(isInitialized)
onLoadWebView();
}
public void onLoadWebview()
{
for (int i = 0; i < arrayList.size(); i++) {
if(sActionBar.getSelectedTab().getPosition()==i)
{
webview.initwebview(arrayList.get(i));
mWebViewList.add(i, webview);
break;
}
}
}
}
答案 1 :(得分:0)
onCreateView仅在创建活动后才创建一次 您可以将方法放在onResume()或刷新web 你可以看到Fragment的生命周期here