1

我已经动态创建了操作栏和选项卡。我已经为标签片段定义了一个类,如下面的代码。

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方法并且回调成功。如果我第二次访问选项卡,则仅显示片段,不会重新创建选项卡内容。我需要不是每次都创建的选项卡内容的功能。但我面临本机方法未定义错误的问题。那就是根本不调用本机方法。我该如何解决这个问题?

4

2 回答 2

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;
               }
           }
}
   }
于 2013-04-18T13:32:57.417 回答
0

onCreateView only will be created Once ONLY after Activity Created 您可以将您的方法放在 onResume() 或刷新 web 您可以在此处查看 Fragment 的生命周期

于 2013-04-18T07:39:25.327 回答