燃烧至死 2016-07-14 10:37 采纳率: 0%
浏览 1250
已结题

viewpager显示第二个fragment的时候menu总会不显示

package com.testing.simplesp.widget;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import android.webkit.WebView;
import android.widget.ScrollView;

import com.testing.simplesp.R;

public class MyViewPager extends ViewPager {

public MyViewPager(Context context) {
    super(context);
}

public MyViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
    ScrollView sv = (ScrollView) v.findViewById(R.id.sv); //res ID
    WebView wv_doc = (WebView) v.findViewById(R.id.wv_doc); //res ID
    System.out.println(sv.getVisibility() + ":" + wv_doc.getVisibility());
    System.out.println(v.getTag());
    if (sv != null && sv.getVisibility() == View.VISIBLE) {
        return sv.canScrollHorizontally(-dx);
    }
    if (wv_doc != null && wv_doc.getVisibility() == View.VISIBLE) {
        return super.canScroll(v, checkV, dx, x, y);
    }
    return super.canScroll(v, checkV, dx, x, y);
}

}

package com.testing.simplesp.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import com.testing.simplesp.R;
import com.testing.simplesp.adapter.Document.DocumentAdapter;
import com.testing.simplesp.domain.DocumentItem;

/**

  • A simple {@link Fragment} subclass.
    */
    public class DocumentDetailFragment extends Fragment {

    private WebView wv_doc;
    private TextView tv_title;
    private TextView tv_unit;
    private TextView tv_content;
    private Toolbar mToolbar;
    private ScrollView sv;
    private DocumentItem.Data mData;
    private boolean isWebView = false;
    private boolean hasLoad = false;
    private View mView;
    private RelativeLayout mRl;

    public DocumentDetailFragment() {
    }

    public static DocumentDetailFragment newInstance(int position) {
    DocumentDetailFragment fragment = new DocumentDetailFragment();
    Bundle bundle = new Bundle();
    bundle.putInt("position", position);
    fragment.setArguments(bundle);
    return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_document_detail, container, false);
    initView();
    initData();
    return mView;

    }

    private void initView() {
    setHasOptionsMenu(true);
    mRl = (RelativeLayout) mView.findViewById(R.id.rl);
    wv_doc = (WebView) mView.findViewById(R.id.wv_doc);
    sv = (ScrollView) mView.findViewById(R.id.sv);
    tv_title = (TextView) mView.findViewById(R.id.tv_title);
    tv_unit = (TextView) mView.findViewById(R.id.tv_unit);
    tv_content = (TextView) mView.findViewById(R.id.tv_content);
    mToolbar = (Toolbar) mView.findViewById(R.id.toolbar);
    sv.setVisibility(View.VISIBLE);
    wv_doc.setVisibility(View.INVISIBLE);
    ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
    }

    private void initData() {
    Bundle bundle = getArguments();
    int position = bundle.getInt("position");
    mView.setTag(new Integer(position));
    mData = DocumentAdapter.mValues.get(position);
    tv_title.setText(mData.getTitle());
    tv_unit.setText(mData.getUnit() + " " + mData.getTime());
    tv_content.setText(mData.getContent());
    }

    private void showWebView() {
    hasLoad = true;
    //展示原网页
    WebSettings settings = wv_doc.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setBuiltInZoomControls(true);
    settings.setUseWideViewPort(true);

    wv_doc.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    });
    
    wv_doc.setWebChromeClient(new WebChromeClient() {
    
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
        }
    
        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);
        }
    });
    wv_doc.loadUrl(mData.getUrl());
    

    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_main, menu);
    super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
    if (!isWebView) {
    if (!hasLoad)
    showWebView();
    wv_doc.setVisibility(View.VISIBLE);
    sv.setVisibility(View.INVISIBLE);
    } else {
    wv_doc.setVisibility(View.INVISIBLE);
    sv.setVisibility(View.VISIBLE);
    }
    isWebView = !isWebView;
    item.setTitle(isWebView ? "返回" : "查看原网页");
    return true;
    }
    return super.onOptionsItemSelected(item);
    }
    }
    package com.testing.simplesp.adapter.Document;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

import com.testing.simplesp.fragment.DocumentDetailFragment;

/**

  • Created by admin on 2016/7/12.
    */
    public class DocumentDetailPageAdapter extends FragmentStatePagerAdapter {
    public DocumentDetailPageAdapter(FragmentManager fm) {
    super(fm);
    }

    @Override
    public Fragment getItem(int position) {
    System.out.println(position);
    return DocumentDetailFragment.newInstance(position);
    }

    @Override
    public int getCount() {
    return DocumentAdapter.mValues.size();
    }

}
package com.testing.simplesp.activity;

import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.webkit.WebView;
import android.widget.ScrollView;
import android.widget.TextView;

import com.testing.simplesp.R;
import com.testing.simplesp.adapter.Document.DocumentDetailPageAdapter;
import com.testing.simplesp.domain.DocumentItem.Data;

public class DocumentDetailActivity extends AppCompatActivity {

public static ViewPager sViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initView();
    initData();

}


private void initData() {
    //不展示原网页

    setTitle("校园公文通");

}


private void initView() {
    setContentView(R.layout.activity_detail_document);
    sViewPager = (ViewPager) findViewById(R.id.container);
    int position = getIntent().getIntExtra("currentPosition", 0);
    sViewPager.setAdapter(new DocumentDetailPageAdapter(getSupportFragmentManager()));
    sViewPager.setCurrentItem(position);

}

}

很奇怪的是,第一个fragment点击menuitme的时候,webview左右是无法拖动的,但是其他界面却可以。
还有
当position = 0时,position=1的menuitem是不显示的,但是滑动到第四个fragment再滑动回来却有显示。
当postion>0时,position-1的显示情况和上述一模一样。

找了各个地方,实在是找不到哪里出了问题。求助!!!

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?