viewpager+fragment只显示第一个item 1C

结构是fragment下一个父viewpager+fragment的组合,其中一个viewpager下嵌套了一个竖直方向的viewpager,子viewpager也是+fragment的组合,现在的问题是子viewpager中滑动切换的时候显示的都是同一个页面(第一个页面),滑动事件没有问题,就是滑动到第二个页面的时候显示的还是第一个item,使用的是getchildfragmentmanager,这个是没有问题的,滑动事件也没有问题,实在是头疼,找不出问题,代码贴在下面,请大神求解

6个回答

图片说明

前三张是同一个图。。。。搞错了

不把完整的代码贴出来?

滑动到第二个页面显示的还是第一个item,可能是你的viewpager的adapter中,放进去的item搞错了,检查一下adapter里面放了什么进去

a348639336
a348639336 要哪一块代码?adapter中放的是fragment的集合上图代码中有,添加了两个fragment作为viewpager的视图
大约 4 年之前 回复

因为每一次都调用了onCreateView方法,重新加载了视图

molashaonian
molashaonian 你可以对ViewPager设置滑动监听,看看哪里错了
大约 4 年之前 回复
a348639336
a348639336 应该不是这个问题啊,我父viewpager也是这种使用方式,没有问题,
大约 4 年之前 回复
a348639336
a348639336 那要怎么解决呢
大约 4 年之前 回复

initFragment()方法是在什么地方调用的?代码里没有看到

onCreate()方法有问题吧,直接用给的参数inflater添加布局吧,而且怎么用的是三个参数的这个onCreate啊,代码给的不是很全,我所说的不一定解决问题

完整代码在这里

public class FragmentMainGoldPlan extends FragmentBase{

private VerticalViewPager mViewPager;

private ArrayList<Fragment> mFragmentList;
private ImageButton ib_auto_bid;

private static final float MIN_SCALE = 0.75f;
private static final float MIN_ALPHA = 0.75f;

public static Fragment newInstance() {
    Fragment fg = new FragmentMainGoldPlan();
    fg.setHasOptionsMenu(true);

    return fg;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    initFragment();
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout_main_gold_plan_view, container,false);
    mViewPager = (VerticalViewPager) view.findViewById(R.id.vp_gold_plan_pager);
    ib_auto_bid = (ImageButton) view.findViewById(R.id.ib_go_auto_bid);
    ib_auto_bid.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //斗金自动认购
            goAutoBid();
        }
    });
    mViewPager.setAdapter(new GoldPlanAdapter(getChildFragmentManager(),
            mFragmentList));

    return view;
}

protected void goAutoBid() {
    Intent intent = new Intent(getActivity(), ActivityGoldAutoBid.class);
    startActivity(intent);

}

private void initFragment() {
    Fragment fg_first = FragmentGoldPlanFirst.newInstance();
    Fragment fg_seccond = FragmentGoldPlanSeccond.newInstance();
    mFragmentList = new ArrayList<Fragment>();
    mFragmentList.add(fg_first);
    mFragmentList.add(fg_seccond);
}

class GoldPlanAdapter extends FragmentPagerAdapter{

private ArrayList<Fragment> fgList;

public GoldPlanAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }

public GoldPlanAdapter(FragmentManager fm,
        ArrayList<Fragment> fragments) {
    super(fm);
    this.fgList = fragments;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return fgList.size();
}

@Override
public Fragment getItem(int position) {
    // TODO Auto-generated method stub
    return fgList.get(position);
}

}

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
viewpager+fragment只显示第一个item

结构是fragment下一个父viewpager+fragment的组合,其中一个viewpager下嵌套了一个竖直方向的viewpager,子viewpager也是+fragment的组合,现在的问题是子viewpager中滑动切换的时候显示的都是同一个页面(第一个页面),滑动事件没有问题,就是滑动到第二个页面的时候显示的还是第一个item,使用的是getchildfragmentmanager,这个是没有问题的,滑动事件也没有问题,实在是头疼,找不出问题,代码贴在下面,请大神求解

Fragment+ViewPager滑动里面Fragment出现空白

我是在一个Activity(也是从Fragment里跳出来的)里 用 ViewPager +Fragment, FragmentPagerAdapter里有三个 Fragment。我在滑动ViewPager的时候,第一次 滑动各个Fragment都会显示,第二次滑动的时候,只剩下第二个第三个Fragment出现空白,第一个一直 好好的。请问大侠们,这是为什么呢

如何解决ViewPager+Fragment+GridView实现无限滑动时页面切换的卡顿问题?

最近想自己写一个日历组件,思路是使用ViewPager+Fragment+GridView,如图 (https://img-ask.csdn.net/upload/201902/27/1551263494_687583.png) 最外层是一个DialogFragment 如果正常滑动,没有任何问题,但在快速滑动的时候,在滑到Fragment1和4时进行setCurrentItem时,会发生卡顿现象,即没有即时跳转导致已达到边界无法继续滑动的情况 慢滑 (https://img-ask.csdn.net/upload/201902/27/1551269528_523451.gif) 快滑 (https://img-ask.csdn.net/upload/201902/27/1551269556_845553.gif) 我自己尝试过的解决办法: 1. 一开始我以为是Fragment中布局过于复杂,导致在刷新数据时卡顿,但即时我去掉Fragment中的所有布局,仍会发生卡顿现象 2.后来我将问题定位在ViewPager的事件分发上,将ViewPager的自定义,将onInterceptTouchEvent方法复写直接返回true,现象消失,滑动无问题,但由于GridView中需要响应点击事件,所以我又做了事件拦截的判断,但无论怎么判断,只要不直接返回true,该现象就会发生 下面贴上我的部分代码: 1. 我在DialogFragment中为ViewPager绑定监听事件,在onPageScrollStateChanged中判断页面是否跳转,在页面滑到最左最右时进行跳转 ``` //滑动状态监听 override fun onPageScrollStateChanged(p0: Int) { //1时表示正在滑动、2时表示滑动完毕、0时什么都没做,滑动时变化顺序为1>2>0 //在0时设置页面位置互换 if (p0 == 0){ position = calViewPager.currentItem when (position) { 0 -> { //到达最左侧Fragment时,刷新倒数第二个Fragment的数据与其保持一致,然后跳转,刷新部分代码省略 calViewPager.setCurrentItem(2, false) //跳转完成后刷新其余页面,代码省略 } 3 -> { //到达最右侧Fragment时,刷新第二个Fragment的数据与其保持一致,然后跳转,刷新部分代码省略 calViewPager.setCurrentItem(1, false) //跳转完成后刷新其余页面,代码省略 } 2 -> { //数据刷新,代码省略 } 1 -> { //数据刷新,代码省略 } } } } ``` 2.自定义了ViewPager,进行了事件拦截处理 ``` private var xPosition:Float? = null // 滑动点击判断、拦截 override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { val res = super.onInterceptTouchEvent(ev) xPosition = if (ev!!.action == MotionEvent.ACTION_DOWN){ ev.x }else{ if (Math.abs(ev.x - xPosition!!) > 0){ return true }else{ ev.x } } return res } ``` 3.ViewPager的Adapter ``` class MyCalendarViewPagerAdapter(fm: FragmentManager, private var fragmentsList:MutableList<Fragment>): FragmentPagerAdapter(fm){ //Fragment个数 override fun getCount(): Int { return fragmentsList.size } override fun getItem(p0: Int): Fragment { return fragmentsList[p0] } //不销毁Item override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { } override fun getItemPosition(`object`: Any): Int { return PagerAdapter.POSITION_NONE } } ``` 4.在Fragment中是使用回调进行的数据更新,代码就不上了 这个问题已经困扰我两周了 求大佬指点

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的显示情况和上述一模一样。 找了各个地方,实在是找不到哪里出了问题。求助!!!

从activity调用ViewPager里Fragment的方法传参出现空指针异常?

报错信息如下: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.thefat.lingjunqi.enricher/com.thefat.lingjunqi.enricher.ActivityReading}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$600(ActivityThread.java:156) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:153) at android.app.ActivityThread.main(ActivityThread.java:5338) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) **Caused by: java.lang.NullPointerException** at com.thefat.lingjunqi.enricher.FragmentArticleEN.refresh(FragmentArticleEN.java:32) at com.thefat.lingjunqi.enricher.ActivityReading.onCreate(ActivityReading.java:103) at android.app.Activity.performCreate(Activity.java:5232) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2272) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)  at android.app.ActivityThread.access$600(ActivityThread.java:156)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:153)  at android.app.ActivityThread.main(ActivityThread.java:5338)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)  at dalvik.system.NativeStart.main(Native Method) ActivityReading.class ``` package com.thefat.lingjunqi.enricher; import android.content.Context; import android.content.Intent; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.util.DisplayMetrics; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class ActivityReading extends FragmentActivity { private ViewPager mPager; private ArrayList<Fragment> fragmentsList; private ImageView bottomLine; private TextView textView1, textView2, textView3; private int currIndex = 0; private int bottomLineWidth; private int offset = 0; /*String [] articleTitle; String [] articleContent; String [] transTitle; String [] transContent; String wordsTitle; String [] wordsContent;*/ public static final String ITEM_ID = "item_id"; int color_current; int color_notCurrent; public static void actionStart(Context context, int id){ Intent intent=new Intent(context,ActivityReading.class); intent.putExtra(ActivityReading.ITEM_ID,id); context.startActivity(intent); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_reading); mPager = (ViewPager) findViewById(R.id.viewpager); getActionBar().setDisplayHomeAsUpEnabled(true); color_current=getResources().getColor(R.color.color_current); color_notCurrent =getResources().getColor(R.color.color_notcurrent); String [] articleTitle=getResources().getStringArray(R.array.lesson_name_list_en); String []articleContent=getResources().getStringArray(R.array.array_article); String []transTitle=getResources().getStringArray(R.array.lesson_name_list_cn); String []transContent=getResources().getStringArray(R.array.array_trans); String wordsTitle=getResources().getString(R.string.words_title); String []wordsContent=getResources().getStringArray(R.array.array_words); initImageView(); int index=getIntent().getIntExtra(ActivityReading.ITEM_ID,0); textView1 = (TextView) findViewById(R.id.text1); textView2 = (TextView) findViewById(R.id.text2); textView3 = (TextView) findViewById(R.id.text3); textView1.setOnClickListener(new MyOnClickListener(0)); textView2.setOnClickListener(new MyOnClickListener(1)); textView3.setOnClickListener(new MyOnClickListener(2)); final TextView[] titles = {textView1, textView2, textView3}; fragmentsList = new ArrayList<>(); FragmentArticleEN fragmentArticleEN = new FragmentArticleEN(); FragmentArticleCN fragmentArticleCN = new FragmentArticleCN(); FragmentWords fragmentWords = new FragmentWords(); fragmentsList.add(fragmentArticleEN); fragmentsList.add(fragmentArticleCN); fragmentsList.add(fragmentWords); MyFragmentPagerAdapter Pageradapter=new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList); mPager.setAdapter(Pageradapter); mPager.setCurrentItem(0); FragmentArticleEN fragmentArticleEN_ = (FragmentArticleEN) Pageradapter.instantiateItem(mPager,0); FragmentArticleCN fragmentArticleCN_ = (FragmentArticleCN) Pageradapter.instantiateItem(mPager,1); FragmentWords fragmentWords_= (FragmentWords) Pageradapter.instantiateItem(mPager,2); fragmentArticleEN_.refresh(articleTitle[index],articleContent[index]); fragmentArticleCN_.refresh(transTitle[index],transContent[index]); fragmentWords_.refresh(wordsTitle,wordsContent[index]); mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { int one=offset*2+bottomLineWidth;//页卡1->页卡2偏移量 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { Animation animation=new TranslateAnimation(one*currIndex,one*position,0,0); animation.setFillAfter(true); animation.setDuration(250); bottomLine.startAnimation(animation); titles[currIndex].setTextColor(color_notCurrent); titles[position].setTextColor(color_current); currIndex=position; } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { //创建启动ActivityTitle的Intent Intent intent = new Intent(this, ActivityTitle.class); //添加额外的Flag,将Activity栈中处于FirstActivity之上的Activity弹出 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //启动intent对应的Activity startActivity(intent); return true; } return super.onOptionsItemSelected(item); } private void initImageView() { bottomLine = (ImageView)findViewById(R.id.cursor); bottomLineWidth = BitmapFactory.decodeResource(getResources(), R.drawable.cursor).getWidth(); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenW_Phone = dm.widthPixels; offset = (screenW_Phone/3 - bottomLineWidth)/2; //imgageview设置平移,使下划线平移到初始位置(平移一个offset) Matrix matrix = new Matrix(); matrix.postTranslate(offset, 0); bottomLine.setImageMatrix(matrix); } public class MyOnClickListener implements View.OnClickListener { private int index = 0; public MyOnClickListener(int i) { index = i; } @Override public void onClick(View v) { mPager.setCurrentItem(index); } } } ``` FragmentArticleEN.class ``` package com.thefat.lingjunqi.enricher; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Created by lingjunqi on 2015/12/2. */ public class FragmentArticleEN extends Fragment { private View view; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_fragment_article_en,container,false); return view; } public void refresh(String title, String content){ View visibilityLayout=view.findViewById(R.id.visibility_layout); visibilityLayout.setVisibility(View.VISIBLE); TextView articleTitleText=(TextView)view.findViewById(R.id.article_titile); TextView articleContentText=(TextView)view.findViewById(R.id.article_content); articleTitleText.setText(title); articleContentText.setText(content); } } ``` **如果我采用的方法错误,谁能告诉一下正确的从一个activity向另一个activity内的ViewPager里的fragment传参或者调用它的方法。**

Viewpager+Fragment中gridView空值问题

在Activity上有一个切换按钮,用来切换gridView的显示行数,但是进入到这个Viewpager里面的第一页和第二页的时候点击时会报空值,只有从第三页第四页进入就不会有问题。 在viewpager中填充的是一个数组 ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445496488_432175.png) ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445496540_973937.png) 然后这是点击事件里面的调用的切换方法 ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445496746_218201.png) 这是切换显示格式的方法,数组遍历到2的时候gridView和listAdapter(gridAdapter)为null,然后报错。 但是当我把上面的 i < fragments.size();换成2时,前面的两页Fragment能够正常切换 ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445496833_89079.png) 这是报错的详细情况 ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445497092_312966.png)

安卓viewPager+fragment加载后台数据出现的黑屏问题

fragment个数20多个吧是动态增加的,并且fragment需要的数据是在fragment中网络获取的,viewpager绑定adapter的时候出现闪屏,后面左右滑动都没有这个问题。就是在刚刚进入程序后的MainActivity找那个嵌套了两层fragment 然后就会黑屏2秒然后又加载出数据速求大神解决

viewpager抢子控件焦点

如图,一个viewpager嵌套3个fragment,第一个fragment里面有一个listview,item中有一个imageview,在listview的adapter中设置imageview的点击事件,弹出一个popuwindow,第一次进入这个fragment中时,点击imageview响应点击事件,响应一次之后,再点击,无反应,然后稍微滑动viewpager或者点击一下listview的条目的时候,imageview的点击事件才响应,debug也是,应该是焦点问题,但具体的我不知道,有哪位大神帮我看看,应该改哪里 ![图片说明](https://img-ask.csdn.net/upload/201707/05/1499248558_405255.png)

在viewpager和fragment中嵌套listview,出现setAdapter空指针情况。

在viewpager和fragment中嵌套listview,出现setAdapter空指针情况。 为了实现滑动切换界面,我写了三个fragment,在一个fragment中加入了一个listview,怎么启动都是空指针。 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at com.example.tabhost_02.Fragment_Device.onActivityCreated(Fragment_Device.java:33) at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2619) at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:904) at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238) at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439) at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079) at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824) at androidx.fragment.app.FragmentManagerImpl.execSingleAction(FragmentManagerImpl.java:1696) at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:299) at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:235) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244) at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092) at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622) at android.view.View.measure(View.java:22002) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:22002) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) at android.view.View.measure(View.java:22002) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143) at android.view.View.measure(View.java:22002) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at androidx.appcompat.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:403) at android.view.View.measure(View.java:22002) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:22002) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) at android.view.View.measure(View.java:22002) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721) at android.view.View.measure(View.java:22002) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1498) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) at android.view.Choreographer.doCallbacks(Choreographer.java:723) at android.view.Choreographer.doFrame(Choreographer.java:658) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView5" android:layout_width="358dp" android:layout_height="wrap_content" android:text="状态详情" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="176dp" android:text="TextView" /> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="部件信息" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" /> <TextView android:id="@+id/textView6" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="温度传感器" android:textColor="#2196F3" android:textSize="18sp" android:textStyle="bold" /> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> public class Fragment_Device extends Fragment { private List<Info> infos = new ArrayList<>(); private ListView device_info=null; public Fragment_Device(){ } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_device, container, false); initInfo(); return view; } public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initInfo(); } private void initInfo() { Info dev_1 = new Info("室内环境监控", "20摄氏度", "100小时", "2019-05-01 09:00:00"); infos.add(dev_1); Info dev_2 = new Info("室内环境监控", "25摄氏度", "100小时", "2019-05-01 09:08:00"); infos.add(dev_2); Info dev_3 = new Info("室内环境监控", "23摄氏度", "100小时", "2019-05-01 10:00:00"); infos.add(dev_3); Info dev_4 = new Info("室内环境监控", "28摄氏度", "100小时", "2019-05-01 10:30:00"); infos.add(dev_4); InfoAdapter infoAdapter = new InfoAdapter(infos,getContext()); View view = LayoutInflater.from(getContext()).inflate(R.layout.list_item,null); infos=view.findViewById(R.id.lv); device_info = view.findViewById(R.id.lv); device_info.setAdapter(infoAdapter); } }

安卓,viewpager中什么都不显示,求指点

应该已经用fragmentPagerAdapter设置好了fragment,可是viewpager set了adapter后,什么都没有。 先上图: ![图片说明](https://img-ask.csdn.net/upload/201603/07/1457362917_372384.png) ![图片说明](https://img-ask.csdn.net/upload/201603/07/1457362927_190250.png) 下面是content_main,在其中添加了viewpager的组件 ``` <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:showIn="@layout/activity_main" tools:context=".MainActivity" android:id="@+id/drawerlayout"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/> <ListView android:id="@+id/listview" android:layout_width="240dp" android:layout_height="match_parent" android:background="#ff6666" android:layout_gravity="left"> </ListView> </android.support.v4.widget.DrawerLayout> ``` 下面是FragmentPagerAdapter: ``` public class MyFragmentPagerAdapter extends FragmentPagerAdapter { List<Fragment> list; String[] titles; public Fragment getItem(int position) { return list.get(position); } public int getCount() { return list.size(); } MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> list,String[] titles) { super(fm); this.list=list; this.titles=titles; } public CharSequence getPageTitle(int position) { return titles[position]; } } ``` 下面是mainActivity中的与viewpager有关的部分: ``` List<Fragment> listFragment=new ArrayList<Fragment>(); listFragment.add(f1); listFragment.add(f2); listFragment.add(f3); listFragment.add(f4); listFragment.add(f5); viewPager=(ViewPager)super.findViewById(R.id.viewpager); fragmentPagerAdapter=new MyFragmentPagerAdapter(getSupportFragmentManager(),listFragment,new String[]{"标签1","标签2","标签3","标签4","标签5"}); viewPager.setAdapter(fragmentPagerAdapter); tabLayout=(TabLayout)super.findViewById(R.id.tablayout); for(int i=0;i<5;i++) { tabLayout.addTab(tabLayout.newTab()); } tabLayout.setTabMode(TabLayout.MODE_FIXED); tabLayout.setupWithViewPager(viewPager); ``` 下面是填充viewpager第一页的fragment1的代码: ``` public class Fragment1 extends Fragment { RecyclerView recyclerView; MyAdapter myAdapter; public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanced) { View v=inflater.inflate(R.layout.fragment1,container,false); myAdapter=new MyAdapter(getActivity()); recyclerView=(RecyclerView)v.findViewById(R.id.recyclerview); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity()); linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setAdapter(myAdapter); return v; } } ``` 从上图已可见,这部分内容是不显示的,以下是viewpager第二页的fragment2: ``` public class Fragment2 extends Fragment { public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanced) { View v=inflater.inflate(R.layout.fragment2,container,false); return v; } } ``` 后面的fragment与此fragment类似,就不贴了。viewpager中什么都没有,但是从上面MainActivity中的setupWithViewPager的tabLayout就可以获取到标题。 请问应该怎么解决?

android 创建同一个布局的多个fragment,加载listview数据不显示或者错乱

如题,我现在就是想做一个仿淘宝的淘抢购那样的功能,我用的是fragment, 因为不确定有多少个页面,所以我根据时间段来创建fragment, fragment里面只有一个listview 布局,首次进去的时候有数据却不显示,而且还加载了上一个页面和一下个页面, 滑动的时候,有时候不显示数据或者数据错乱了。 点击时间段来选中相应的fragment,数据又不显示出来。 这个应该怎么解决啊?

android gridview+viewpager,根据 position改变item背景。

android gridview+viewpager,怎样根据setOnItemClickListener position改变item背景。 viewpager是循环加入的。 activity里 for (i = 0; i < videoNum / 4; i++) {//我这里的videoNum是20 view = getActivity().getLayoutInflater().inflate( R.layout.fragment_four_video, null); if (viewList.size() < (videoNum / 4)) { viewList.add(view); gridView = (GridView) view.findViewById(R.id.gv); mAdapter = new BaseMoreAdapter(getActivity(), 2, 2, displaychannels, i); gridView.setAdapter(mAdapter); gridView.setSelection(0); gridView.setOnItemClickListener(onItemClick); } } mVpAdapter = new ViewPagerAdapter(viewList); mVPager.setAdapter(mVpAdapter); 在点击事件里调用了适配器里的方法更换背景 private OnItemClickListener onItemClick = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { mAdapter.setSeclection(position); mAdapter.notifyDataSetChanged();} adapter下 public void setSeclection(int position) { clickTemp = position; } adapter getview方法里 if (clickTemp == position) { viewHolder.mRlContent.setBackgroundResource(R.drawable.a); } else { viewHolder.mRlContent.setBackgroundResource(R.drawable.b); } 这样写的结果是,因为循环的关系每次都是操作了最后一页,怎样可以更换viewpager当前页的gridview的item的背景。

android Listview(第一项未滑出屏幕)自动回到顶部

一个诡异的现象: viewpager里面放三个Fragment,每个Fragment里面是个listview,如下三张图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064425_798150.jpg) ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064604_263028.jpg) ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064645_654924.jpg) 下面开始操作,第一个Fragment里,listview上滑一点(**第一个item不滑出屏幕**)如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064835_340669.jpg) 这时候切换到第三个Fragment后,再返回至第一个,这时候的第一个Fragment 变成了在最顶部的位置,如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506064425_798150.jpg) **诡异现象来了**, 操作 第一个Fragment里,listview上滑至**第一个item滑出屏幕**,如下图 ![图片说明](https://img-ask.csdn.net/upload/201709/22/1506065043_657575.jpg) 再做上面的切换步骤后,返回第一个Fragment **保持的位置是不变的**; viewPager使用的是FragmentStatePagerAdapter,如果会有销毁视图的情况发生,那为什么 listview上滑至**第一个item滑出屏幕** 后位置是不变的, 代码就不贴了,都是基础的listview.setAdapter() ,listview每一项里就放了个textView, 不知道有什么办法可以一直保持着listview的位置

Fragment不能为ID找到视图

我想在view中添加一个fragment。 FragmentManager fragMgr=getSupportFragmentManager(); feed_parser_activity content= (feed_parser_activity)fragMgr.findFragmentById(R.id.feedContentContainer); FragmentTransaction xaction=fragMgr.beginTransaction(); if (content==null || content.isRemoving()) { content=new feed_parser_activity(item.getLink().toString()); xaction .add(R.id.feedContentContainer, content) .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) .addToBackStack(null) .commit(); Log.e("Abstract", "DONE"); } 当上面这段代码执行后,在 debug中显示错误: 12-25 19:45:19.040: ERROR/AndroidRuntime(2835): java.lang.IllegalArgumentException: No view found for id 0x7f080011 for fragment feed_parser_activity{41882f50 #2 id=0x7f080011} feed_parser_activity是一个 Fragment,在xml中设置 Fragment 布局。 我用FragmentActivity来控制拥有feed_parser_layout布局的Fragment Layout。 以上的设置为什不正确呢?

使用PagerSlidingTabStrip时出现viewpager滑动时,item不会变化

在一个项目使用PagerSlidingTabStrip+viewpager,viewpager可以左右滑动,然后PagerSlidingTabStrip的tab,点击也会切换fragment,但是不会切换tab,应该是第一个tab和第一个fragment匹配,滑动时,第二个tab应该被选中,但是没反应,只有第一个一直被选中。

Android Fragment布局中的FitsSystemWindows=true无效!

我用的是ViewPage+Fragment想要做到把UI内容显示在Status bar上, 发现把状态栏透明后Toolbar就和状态栏重叠了, 然后我就加了FitsSystemWindows=true这行代码但是没有任何效果, 我试过加载Activity的布局中效果是有的,布局会自动空出一个Status bar 大小的PaddingTop但在Fragment布局中就是没有效果, 不管是加在根布局还是子布局中都无效。我只有自己在Toolbar中写上一个 PaddingTop才能让它们不重叠,不过这是偏方。。。。 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:id="@+id/home_item" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f1f5f6"/> <android.support.v7.widget.Toolbar android:id="@+id/home_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <android.support.v7.widget.SearchView android:id="@+id/home_searchView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="18dp" app:defaultQueryHint="请输入菜品或用户" app:iconifiedByDefault="false"/> </android.support.v7.widget.Toolbar> </RelativeLayout>

关于TabLayout的tab重复添加问题

![图片说明](https://img-ask.csdn.net/upload/201810/27/1540613209_528037.gif) 你们有没有遇到过这种情况,底部使用Fragment做了导航,在一个Fragment里面我又使用了TabLayout+ViewPager+Fragment做了顶部导航,第一次切换到TabLayout时,能加载对应的tab和ViewPager;但是当切换到底部的其他Fragment后再切换回来时,TabLayout的tab会再原来基础上再添加一道,我通过判断TabLayout的tabcount来确定是否执行TabLayout添加tab可以解决这个问题,还有没有更好的办法啊,setupWithViewPager方法说每次添加前都会清空tab,但是并没有,我用的28版本的API,是不是有所差异啊

求助,ListView没有执行getView方法

在一个Fragment中有一个ViewPager,ViewPager有两个页面,其中一个页面是列表页,使用了ListView,自定义了适配器,数据也确实能够查询到,但始终没有执行getView方法。这个ListView的height也是match__parent,但仍然无效 自定义的适配器: ``` public class BookListAdapter extends BaseAdapter { private LayoutInflater mInflater; private List<Book> mData; public BookListAdapter(Context context,List<Book> bookList){ this.mInflater = LayoutInflater.from(context); Log.i("ttg","开始执行适配器构造,当前booklist的数量为"+bookList.size()); mData=bookList; } @Override public int getCount() { // TODO Auto-generated method stub Log.i("ttg","开始执行getCount,当前mData的数量为"+mData.size()); notifyDataSetChanged(); return mData.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Log.i("ttg","调用getView"); ViewHolder holder = null; if (convertView == null) { holder=new ViewHolder(); convertView = mInflater.inflate(R.layout.booklist_item, null); // holder.img = (NetworkImageView)convertView.findViewById(R.id.img); holder.book_list_img = (ImageView) convertView.findViewById(R.id.book_list_img); holder.book_list_bookname = (TextView)convertView.findViewById(R.id.book_list_bookname); holder.book_list_author = (TextView)convertView.findViewById(R.id.book_list_author); holder.book_list_publisher = (TextView)convertView.findViewById(R.id.book_list_publisher); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.book_list_bookname.setText((String)mData.get(position).getBookname()); holder.book_list_publisher.setText((String)mData.get(position).getPublisher()); holder.book_list_author.setText((String)mData.get(position).getAuthor()); Log.i("ttg","数据设置完成"); // holder.img.setImageUrl(mData.get(position).getPicture().getFileUrl(), imageLoader); // 直接设置图片地址到NetworkImage,并将图片放入缓存 // holder.img.setDefaultImageResId(R.mipmap.ic_launcher); // 当图片还没加载出来时显示的图片 //BmobFile bmobFile=mData.get(position).getPicture(); //Toast.makeText(getActivity(),bmobFile.getFileUrl(), Toast.LENGTH_SHORT).show(); return convertView; } public final class ViewHolder{ public ImageView book_list_img; public TextView book_list_bookname,book_list_author,book_list_publisher; } } ``` 适配器会在数据查询之后与控件绑定: ``` BmobQuery<Book> query = new BmobQuery<>(); query.order("-createdAt");// 按照时间降序 Log.i("ttg", "开始查询数据"); query.findObjects(new FindListener<Book>() { @Override public void done(List<Book> list, BmobException e) { Log.i("ttg", "查询完成,一共有" + list.size() + "条数据"); // for (int i=0;i<list.size();++i){ // Log.i("ttg","第"+i+"条数据:"+list.get(i).getBookname()); // } book_list_view.setAdapter(new BookListAdapter(getContext(),list)); ```

android 顶部导航加上侧滑菜单出现问题

public class MainActivity extends AppCompatActivity { private SectionsPagerAdapter mSectionsPagerAdapter;//用于为ViewPager提供多个Fragment,通常用于被扩展 private ViewPager mViewPager;//是Fragment容器,可以同时管理多个Fragment @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.container); mViewPager.setAdapter(mSectionsPagerAdapter); TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(mViewPager); LayoutInflater layout= this.getLayoutInflater(); final View myView=layout.inflate(R.layout.activity_main2,null); final DrawerLayout drawer = (DrawerLayout) myView.findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) myView.findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) myView.findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } ); } public void onBackPressed() { LayoutInflater layout= this.getLayoutInflater(); View myView=layout.inflate(R.layout.activity_main2,null); DrawerLayout drawer = (DrawerLayout) myView.findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { /** * The fragment argument representing the section number for this * fragment. */ private static final String ARG_SECTION_NUMBER = "haha";//键值 public PlaceholderFragment() { } /** * Returns a new instance of this fragment for the given section * number. */ public static PlaceholderFragment newInstance(int sectionNumber) { PlaceholderFragment fragment = new PlaceholderFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); TextView textView = (TextView) rootView.findViewById(R.id.section_label); textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); ImageView imageView= (ImageView) rootView.findViewById(R.id.image1); imageView.setImageResource(R.drawable.e); return rootView; } } /** * A {@link FragmentPagerAdapter} that returns a fragment corresponding to * one of the sections/tabs/pages. * 这个是在Toolbar上的页码被选择之后创建的 */ public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } //获取第position位置的Fragment @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. // Return a PlaceholderFragment (defined as a static inner class below). //在选择的位置上创建一个新的Fragment return PlaceholderFragment.newInstance(position + 1); } //表示Adapter总共包含多少个Fragment @Override public int getCount() { // return 4; } //该方法确定每一个Fragment的标题 @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "第一页"; case 1: return "第二页"; case 2: return "第三页"; case 3: return "第四页"; } return null; } } } ``` ``` ----------------------------------------------------- 侧滑菜单的布局文件不包含在Activity中,现在的情况是单击Toolbar上的toggle,完全没有反应..... +++++++++++++++++++++++++++++++++++++ 如果我想同时显示顶部导航和侧滑菜单应该怎么做呢?还有一个问题,就是侧滑菜单是向右滑动呼出的,但是导航也可以通过左右滑动进行切换,怎么解决这个冲突呢?

android sliding中的viewpage切换变白

写在最前: 如果有朋友可以帮忙解决这个问题,请在底下留言,或者私信我,或者联系我qq:1065885952,谢谢了哈!!~ 功能描述: 用sliding实现侧滑。首页是viewpage,包含三个fragment选项卡,可滑动切换。左侧是listview菜单,点击对应的item,首页的fragment会切换。 问题再现: 1. 首次加载进来,首页viewpage显示正常。 2. 切换到左侧菜单,选择第二项。第二项显示正常。 3. 切换到左侧菜单,选择首页(带有viewpage)的fragment,viewpage变白。 sliding初始化代码如下: private void initSliding(Bundle savedInstanceState) { getSlidingMenu().setMode(SlidingMenu.LEFT); getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width); getSlidingMenu().setShadowDrawable(R.drawable.shadow); getSlidingMenu().setBehindOffsetRes(R.dimen.slidingmenu_offset); getSlidingMenu().setFadeDegree(0.35f); if (savedInstanceState != null) { mContent = getSupportFragmentManager().getFragment( savedInstanceState, "mContent"); } if (mContent == null) { mContent = Fragment_Choose.newInstance(); } // 设置主界面的视图 setContentView(R.layout.frame_main_content); getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mContent).commit(); // 设置左边菜单打开后的视图界面 setBehindContentView(R.layout.frame_left_content); getSupportFragmentManager().beginTransaction().replace(R.id.left_content_id, Fragment_LeftMenu.newInstance()).commit(); } viewpage初始化代码如下: public class BtmNaviSwitchAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> mFragments; public BtmNaviSwitchAdapter(FragmentManager fm) { super(fm); mFragments = new ArrayList<Fragment>(); mFragments.add(Fragment_Test.newInstance()); mFragments.add(Fragment_Test.newInstance()); mFragments.add(Fragment_Test.newInstance()); } public BtmNaviSwitchAdapter(FragmentManager fm, ArrayList<Fragment> fragments) { super(fm); } @Override public int getCount() { return mFragments.size(); } @Override public Fragment getItem(int position) { return mFragments.get(position); } } 左侧菜单点击切换首页fragment代码如下: mLeftListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { String key = ""; switch (position) { case 0: key = "home"; break; case 1: key = "emergencies"; break; default: break; } Activity_Home ma = (Activity_Home) getActivity(); ma.switchContent(key); } }); public void switchContent(String key) { if (mContent.equals(mFragmentList.get(key))) { showMainContent(); return; } mContent = mFragmentList.get(key); getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, mFragmentList.get(key)).commit(); getSlidingMenu().showContent(); }

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大胆预测下未来5年的Web开发

在2019年的ReactiveConf 上,《Elm in Action》的作者Richard Feldman对未来5年Web开发的发展做了预测,很有意思,分享给大家。如果你有机会从头...

立即提问
相关内容推荐