0

我正在创建一个现金销售应用程序,我将在其中实现 4 个选项卡。从第一个选项卡用户将从客户列表中选择客户,第二个选项卡从项目列表中选择项目,第三个选项卡在 7 中设置付款详细信息,第四个选项卡EditText查看草稿并确认保存在 SQLite 中。我有几个问题:

  1. 对于选项卡,我是否应该首先通过如下扩展来创建选项卡容器FragmentActivity

    public class CashSales extends FragmentActivity {
    
        private FragmentTabHost mTabHost;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.cash_sales_tab);
            mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
            mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
    
            mTabHost.addTab(mTabHost.newTabSpec("customer").setIndicator("customer"),
                    CustomerSelect.class, null);
            mTabHost.addTab(mTabHost.newTabSpec("item").setIndicator("item"),
                    ItemSelect.class, null);
            mTabHost.addTab(mTabHost.newTabSpec("payment").setIndicator("payment"),
                    SetPayment.class, null);
            mTabHost.addTab(mTabHost.newTabSpec("payment").setIndicator("payment"),
                    DraftViewAndSave.class, null);
        }
    }
    
  2. 我应该为每个活动创建不同的类吗?CustomerSelectItemSelect?如果需要创建不同的类,应该从Fragment类还是FragmentActivity类扩展?

  3. 当用户从第一个选项卡转到第二个选项卡时,我如何记住数据?我应该使用 Session 并最终将数据从会话保存到数据库吗?

伙计们,我是 Android 新手。请帮助我或发送任何示例链接。

4

1 回答 1

1

我已经实现了同样的事情,所以我分享我的想法。

For tab, should I create a tab container first by extending FragmentActivity

您应该创建一个扩展FragmentActivity. 而是使用我使用的选项卡ViewPager和自定义选项卡,FragmentPagerAdapter其中包含您的四个不同Fragnment(在您的情况下为 CustomerSelect、ItemSelect 等)并在滑动时您可以将数据保存在BundleFragments 中,然后从您的 FragmentActivity 调用一个方法以从您的类public中获取Bundle对象fragment

Should I create different classes for each of the activities like CustomerSelect, ItemSelect etc?

是的你应该。

How can I memorize the data when user will go from 1st tab to 2nd tab? Should I use Session and finally save data from session to database?

如上所述,您可以将数据保存在 bundle 对象中,然后在 FragmentActivity 中,您可以在方法中调用 save 方法,onPageSelected例如 .

private Bundle firstFragmentData;

  mPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {

                switch (arg0) {
                case 1:

                    fragment1 = (MyFirstFragment) getSupportFragmentManager()
                            .findFragmentByTag(
                                    "android:switcher:" + R.id.pager + ":"
                                            + (arg0 - 1));
                    firstFragmentData = fragment1.SaveDatainFragment1();

                    break;

实际上,您需要为getters从主要 FragmentActivity 中的不同片段中获得的所有捆绑对象设置

public Bundle getFirstFragmentData() {
     return firstFragmentData;  
 }

现在在你的任何片段中,你可以得到任何这样的片段数据..

Bundle firstFragmentData = ((MainFragmentActivity) getActivity())
                        .getFirstFragmentData(); // here you got the bundle 

我希望这有帮助。

于 2013-02-26T09:58:04.963 回答