我们必须知道当前片段是寻呼机适配器中的可见模式,但无法处理。
File dir = new File(Environment.getExternalStorageDirectory(), filepath);
if(!dir.exists()) {
dir.mkdir();
}
filename = "O"+pref.getCurrentOdrerId()+".pdf";
System.out.println("filename: "+filename);
pdfFile = new File(dir.getAbsoluteFile()+"/"+filename);
Uri uri;
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= Constants.ANDROID_NOUGAT) {
//uri = Uri.parse(pdfFile.getAbsolutePath());
uri = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider",
new File(pdfFile.getAbsolutePath()));
}
else{
uri = Uri.fromFile(new File(pdfFile.getAbsolutePath()));
}
WebView webView = (WebView) v.findViewById(R.id.showInvoicePdf);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new MyBrowser());
webView.loadUrl(uri.toString());//String.valueOf(new File(pdfFile.getAbsolutePath()))
这是我的代码无效。
答案 0 :(得分:0)
ViewPager.OnPageChangeListener
是正确的方法。正如您所注意到的那样,onPageSelected(int position)
在页面居中之前不会被调用。因此,当页面正确居中时,它将为您提供当前可见的片段。
答案 1 :(得分:0)
有一些方法可以做到这一点。首先,您可以在视图寻呼机上设置页面更改侦听器:
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(final int i, final float v, final int i2) {
}
@Override
public void onPageSelected(final int i) {
// If you are user FragmentPagerAdapter below is the right way to get fragment
Fragment fragment= getChildFragmentManager().findFragmentByTag("android:switcher:" + R.id.viewPager_card_exchanger + ":" + i);
if(fragment!=null){
// Do your stuff here
}
}
@Override
public void onPageScrollStateChanged(final int i) {
}
});
或者您可以覆盖片段方法,如下所示:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
System.out.println("VISIBLE");
} else {
System.out.println("GONE");
}
}