Java webview==再次调用viewpager内的片段时为null
我的Java webview==再次调用viewpager内的片段时为null,java,android,android-fragments,webview,Java,Android,Android Fragments,Webview,我的viewpager有问题。我在viewpager中创建了2个片段,但当我再次调用时,我得到view==null paper_adater.java public class Paper_adapter extends FragmentStatePagerAdapter { Context context; public Paper_adapter(FragmentManager fm) { super(fm); // TODO Auto-generated construc
viewpager
有问题。我在viewpager
中创建了2个片段,但当我再次调用时,我得到view==null
paper_adater.java
public class Paper_adapter extends FragmentStatePagerAdapter {
Context context;
public Paper_adapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
return new Web_fragment();
case 1:
return new Table_fragment();
default:
return null;
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public float getPageWidth(int position) {
// TODO Auto-generated method stub
return 0.95f;
}
public class Web_fragment extends Fragment {
public static final String URL = "file:///android_asset/chart/index.html";
private final String TAG = "WEB fragment";
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.webview_fragment, null);
this.webView = (WebView) view.findViewById(R.id.webview);
// webView.clearHistory();
// webView.clearCache(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.loadUrl(URL);
return view;
}
public void setValue(Context context) {
// webView = (WebView)getView().findViewById(R.id.webview);
// webView.loadUrl("javascript:setValue()");
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
}
public Boolean draw(Context context, String data) {
if (webView == null) {
// webView.loadUrl("javascript:setValue()");
Toast.makeText(context, "webview null", Toast.LENGTH_SHORT)
.show();
} else {
if (data == null) {
webView = (WebView) getView().findViewById(R.id.webview);
webView.loadUrl("javascript:setValue()");
return false;
} else {
Toast.makeText(context, "data web :" + data, Toast.LENGTH_SHORT)
.show();
webView.loadUrl("javascript:setValue()");
return true;
}
}
return false;
}
detail\u fragment.java
public class DetailFragment extends Fragment implements OnPageChangeListener {
public static final String TAG = "Detail fragment";
WebView webView;
ViewPager viewPaper;
Paper_adapter paper_adapter;
public static int currentPage;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.e(TAG, "on create view");
View view = inflater.inflate(R.layout.detail_fragment, null);
viewPaper = (ViewPager) view.findViewById(R.id.pager);
paper_adapter = new Paper_adapter(getChildFragmentManager());
viewPaper.setAdapter(paper_adapter);
viewPaper.setOnPageChangeListener(this);
return view;
}
public void Draw(String data, int position) {
FragmentManager fm = getFragmentManager();
Fragment fr = paper_adapter.getItem(position);
if (fr instanceof Web_fragment && fr != null) {
((Web_fragment) fr).draw(getActivity(),data);
} else if (fr instanceof Table_fragment && fr != null) {
}
}
}
Web_fragment.java
public class Paper_adapter extends FragmentStatePagerAdapter {
Context context;
public Paper_adapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
return new Web_fragment();
case 1:
return new Table_fragment();
default:
return null;
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public float getPageWidth(int position) {
// TODO Auto-generated method stub
return 0.95f;
}
public class Web_fragment extends Fragment {
public static final String URL = "file:///android_asset/chart/index.html";
private final String TAG = "WEB fragment";
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.webview_fragment, null);
this.webView = (WebView) view.findViewById(R.id.webview);
// webView.clearHistory();
// webView.clearCache(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.loadUrl(URL);
return view;
}
public void setValue(Context context) {
// webView = (WebView)getView().findViewById(R.id.webview);
// webView.loadUrl("javascript:setValue()");
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
}
public Boolean draw(Context context, String data) {
if (webView == null) {
// webView.loadUrl("javascript:setValue()");
Toast.makeText(context, "webview null", Toast.LENGTH_SHORT)
.show();
} else {
if (data == null) {
webView = (WebView) getView().findViewById(R.id.webview);
webView.loadUrl("javascript:setValue()");
return false;
} else {
Toast.makeText(context, "data web :" + data, Toast.LENGTH_SHORT)
.show();
webView.loadUrl("javascript:setValue()");
return true;
}
}
return false;
}
当我从
detail\u fragment
调用Draw()。。。适配器的getItem实现每次。。。此片段未添加到任何片段管理器(它根本不启动其生命周期)。。。显然,这样的片段没有任何观点。。。即使不知道片段的生命周期,也应该很明显,它并没有视图。。。为什么?因为只调用了片段构造函数,而没有创建视图(onCreateView)的调用,所以如何创建它?请帮帮我。或者发送教程。谢谢。我做到了,谢谢。显然你不知道android的基础知识:fragment的生命周期。。。适配器的getItem实现每次。。。此片段未添加到任何片段管理器(它根本不启动其生命周期)。。。显然,这样的片段没有任何观点。。。即使不知道片段的生命周期,也应该很明显,它并没有视图。。。为什么?因为只调用了片段构造函数,而没有创建视图(onCreateView)的调用,所以如何创建它?请帮帮我。或者发送教程。谢谢,我做到了,谢谢。