【问题标题】:back button not in viewPager Works后退按钮不在 viewPager Works 中
【发布时间】:2014-11-12 19:20:28
【问题描述】:

我已经在我的片段中实现了一个视图寻呼机。按下后退按钮终止应用程序而不是更改上一页。有人可以告诉我如何将返回按钮返回给我。

    public class Warenkonto extends Fragment {

    public Warenkonto() {
     }

    ViewPager viewPager;
    WarenkontoPageAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {

            View view = inflater.inflate(R.layout.start_kapitel, container, false);
adapter = new WarenkontoPageAdapter(this.getActivity());
            viewPager = (ViewPager) view.findViewById(R.id.viewPager);
            viewPager.setAdapter(adapter);
      viewPager.setCurrentItem(0);
      return view;
     }

    public void onBackPressed() {
            if (viewPager.getCurrentItem() == 0) {
                    viewPager.setCurrentItem(0);
} else {
                    viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
            }
    }

}

public class WarenkontoPageAdapter extends PagerAdapter {

    Context context;

    public WarenkontoPageAdapter(Context context) {
            this.context = context;
    }

    TextView titel;
    TextView titelInhalt;
    TextView inhalt;
    TextView seite_von_bis;
    ImageView bild;
    ImageView imagePfeilrechts;
    CharSequence titelInhalttext; 
    CharSequence inhaltText; 

    public int seite;
    int maxSeitenzahl = 20;

    public int getCount() {
            return 3;
    }

    public Object instantiateItem(View collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;

            switch (position) {
            case 0:
                    resId = R.layout.a_titel_inhalt;
                    seite = 1;
                    break;
            case 1:
                    resId = R.layout.a_titel_inhalt;
                    seite = 2;
                    break;
            case 2:
                    resId = R.layout.a_inhalt;
                    seite = 3;
                    break;

            }

            View view = inflater.inflate(resId, null);

            if (seite == 1) {
                    titel = (TextView) view.findViewById(R.id.a_ti_titel);
                    titel.setText("Warenkonto");

                    titelInhalt = (TextView) view.findViewById(R.id.a_ti_inhalt);
                    titelInhalttext = Html.fromHtml("Page 1");


            } else if (seite == 2) {

                    titel = (TextView) view.findViewById(R.id.a_ti_titel);
                    titel.setText("Page 2");

                    titelInhalt = (TextView) view.findViewById(R.id.a_ti_inhalt);
                    titelInhalttext = Html
                                    .fromHtml("Page 2");

                    titelInhalt.setText(titelInhalttext);


            } else if (seite == 3) {

                    inhalt = (TextView) view.findViewById(R.id.a_i_inhalt);
                    inhaltText = Html
                                    .fromHtml("Page 3");

                    inhalt.setText(inhaltText);


            }


            ((ViewPager) collection).addView(view, 0);

            return view;

    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);
    }

    @Override
    public Parcelable saveState() {
            return null;
    }

}

【问题讨论】:

    标签: android android-fragments android-viewpager fragment onbackpressed


    【解决方案1】:

    根据Android Design Guide Navigation section(已添加重点)

    在屏幕内改变视图

    更改屏幕的视图选项不会改变 Up 的行为 或返回:屏幕仍然在应用程序的同一位置 层次结构,并且不会创建新的导航历史记录。

    此类视图更改的示例如下:

    • 使用标签和/或左右滑动切换视图
    • 使用下拉菜单(又名折叠标签)切换视图
    • 过滤列表
    • 对列表进行排序
    • 更改显示特性(例如缩放)

    标签(和 ViewPagers)不应该有历史记录,所以它们不应该被添加到后台堆栈中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多