0

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

    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;
    }

}

4

1 回答 1

0

根据Android 设计指南导航部分(已添加重点)

在屏幕内更改视图

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

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

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

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

于 2014-11-12T19:25:40.440 回答