如何通过单个活动在 android 中进行 500 个问题测验?

Age*_*t K 1 android

我正在创建一个 android 应用程序,我将在其中使用 RadioButtons 询问多种类型的问题。我不想为这些问题做多个活动。谁能用一个简短的例子告诉我如何做到这一点,至少有两个问题?

Rod*_*ijo 5

您可以使用多个片段……或多次调用活动本身……我做了一个像您这样的应用程序,我选择了第一种方法!

这是我编写的项目的一些片段,以及操作它的活动,您必须根据需要更改它。

活动

public class CollectActivity extends FragmentActivity {

    MyPageAdapter pageAdapter;
    NonSwipeableViewPager pager;
    SpringIndicator springIndicator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_collect);
        List<Fragment> fragments = getFragments();
        pager = (NonSwipeableViewPager) findViewById(R.id.view_pager);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        PagerModelManager manager = new PagerModelManager();
        manager.addCommonFragment(fragments, getTitles());


        ModelPagerAdapter adapter = new ModelPagerAdapter(getSupportFragmentManager(), manager);
        pager.setAdapter(adapter);
        springIndicator = (SpringIndicator) findViewById(R.id.indicator);
        springIndicator.setViewPager(pager);
        springIndicator.setOnTabClickListener(new TabClickListener() {
            @Override
            public boolean onTabClick(int position) {
                return false;
            }
        });


    }

    private List<Fragment> getFragments() {
        List<Fragment> fList = new ArrayList<Fragment>();
        fList.add(CollectFragment.newInstance("Fragment 1"));
        fList.add(CollectFragment.newInstance("Fragment 2"));
        fList.add(CollectFragment.newInstance("Fragment 3"));
        //add your fragments with a loop

        return fList;
    }

    private List<String> getTitles() {
        return Lists.newArrayList("1", "2", "3");
    }


    public void swipeFragment() {

        pager.setCurrentItem(pager.getCurrentItem() + 1);

    }

    public int getFragment() {
        return pager.getCurrentItem();

    }


}
Run Code Online (Sandbox Code Playgroud)

分段

public class CollectFragment extends Fragment {
    private Button openButton;
    private Button confirmationCloseButton;
    private Button yesRenew;
    private Button noRenew;
    private BroadcastReceiver udpMessages;

    public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";


    public static final CollectFragment newInstance(String message) {
        CollectFragment f = new CollectFragment();
        Bundle bdl = new Bundle(1);
        bdl.putString(EXTRA_MESSAGE, message);
        f.setArguments(bdl);
        return f;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        String message = getArguments().getString(EXTRA_MESSAGE);
        View v = null;
        if (message.compareTo("Fragment 1") == 0) {
            v = inflater.inflate(R.layout.fragment_collect_open, container, false);
            openButton = (Button) v.findViewById(R.id.open_button);
            openButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i2 = new Intent();
                    i2.setComponent(new ComponentName("qira.com.locker", "qira.com.locker.Service.MessageService"));
                    i2.putExtra("Message", "CONFIRM_LOCKER_1_CLOSED");
                    getContext().startService(i2);
                }
            });
        }
        if (message.compareTo("Fragment 2") == 0) {
            v = inflater.inflate(R.layout.fragment_collect_close, container, false);
            confirmationCloseButton = (Button) v.findViewById(R.id.confirmation_close_button);
            confirmationCloseButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i2 = new Intent();
                    i2.setComponent(new ComponentName("qira.com.locker", "qira.com.locker.Service.MessageService"));
                    i2.putExtra("Message", "OPEN_LOCKER_1");
                    getContext().startService(i2);
                }
            });
        }
        if (message.compareTo("Fragment 3") == 0) {
            v = inflater.inflate(R.layout.fragment_collect_renew, container, false);
            yesRenew = (Button) v.findViewById(R.id.yes_button);
            noRenew = (Button) v.findViewById(R.id.no_button);


            yesRenew.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ((CollectActivity) getActivity()).swipeFragment();
                }
            });


            noRenew.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i = new Intent(getContext(), ReserveActivity.class);
                    startActivity(i);
                }
            });
        }

        return v;
    }

    @Override
    public void onResume() {
        super.onResume();
        udpMessages = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent.getAction() != null && intent.getAction().equals("UDP.MESSAGES.COLLECT")) {
                    if (intent.getExtras().getString("Type").compareTo("OPEN_LOCKER_1-LOCKER_OPENED") == 0) {
                        if (((CollectActivity) getActivity()).getFragment() != 0) {   // onCreateView called twice, dont know why... workaround to solve this problem
                            ((CollectActivity) getActivity()).swipeFragment();
                        }
                    }
                    if (intent.getExtras().getString("Type").compareTo("CONFIRM_LOCKER_1_CLOSED-TRUE") == 0) {
                        if (((CollectActivity) getActivity()).getFragment() != 1) {   // onCreateView called twice, dont know why... workaround to solve this problem
                            ((CollectActivity) getActivity()).swipeFragment();
                        }
                    }

                }
            }
        };

        getContext().registerReceiver(udpMessages, new IntentFilter("UDP.MESSAGES.COLLECT"));

    }

    @Override
    public void onPause() {
        super.onPause();
        getContext().unregisterReceiver(udpMessages);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();

    }


}
Run Code Online (Sandbox Code Playgroud)