Android передает данные через приложение

У меня есть просмотр списка, в котором есть список мест - у меня есть идентификатор, имя и позиция для каждой строки списка. Мои данные хранятся локально в sqlite.

Когда пользователь нажимает на определенное место, я хочу отобразить детали этого конкретного места на следующем экране, который структурирован следующим образом

  • Действие фрагмента, в котором размещены два фрагмента
  • Первый фрагмент имеет индикатор Viewpager вверху и информацию под ним.
  • Второй фрагмент содержит карту Google, которая отображает место на карте.

Так что мне нужно знать место, которое пользователь выбрал в трех разных действиях и фрагментах.

Пользователь должен иметь возможность вернуться и выбрать новое место, и его снова можно будет обойти.

PlaceActivity.java, которому нужен идентификатор места

public class PlaceActivity extends SherlockFragmentActivity implements
        OnShareTargetSelectedListener {

    private PlaceMapsFragment fragment_maps = null;
    private PlaceDetailsFragment fragment_details = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_place);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setTitle("Nandi Hills");
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        ActionBar.Tab tabMaps = actionBar.newTab();
        ActionBar.Tab tabDetails = actionBar.newTab();

        tabDetails.setText("Details");
        tabMaps.setText("Maps");

        tabDetails.setTabListener(new PlaceTabListener());
        tabMaps.setTabListener(new PlaceTabListener());

        actionBar.addTab(tabDetails);
        actionBar.addTab(tabMaps);

    }

    private class PlaceTabListener implements ActionBar.TabListener {
        @Override
        public void onTabSelected(Tab tab,
                android.support.v4.app.FragmentTransaction ft) {
            ft.setCustomAnimations(android.R.anim.fade_in,
                    android.R.anim.fade_out);
            // TODO Auto-generated method stub

            if (tab.getPosition() == 0) {

                if (fragment_details == null) {
                    fragment_details = new PlaceDetailsFragment();
                    ft.add(R.id.fragment_container, fragment_details,
                            PlaceDetailsFragment.TAG);
                } else {

                    ft.show(fragment_details);
                }
            } else {
                if (fragment_maps == null) {
                    // fragment_maps = new PlaceMapsFragment();
                    fragment_maps = PlaceMapsFragment.newInstance(new LatLng(
                            13.005621, 77.577531));
                    ft.add(R.id.fragment_container, fragment_maps,
                            PlaceMapsFragment.TAG);
                } else {

                    ft.show(fragment_maps);
                }
            }
        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {

            if (tab.getPosition() == 0) {
                if (fragment_details != null) {
                    ft.hide(fragment_details);
                }
            } else {
                if (fragment_maps != null) {
                    ft.hide(fragment_maps);
                }
            }
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub

        }

    }
} 

1 ответ

Решение

Создайте конструктор в вашем MapFragment при получении значений, необходимых для этого фрагмента, а затем заполните этот фрагмент этой информацией.

public MyMapFragment(long id,String name,int position){
    this.id = id;
    this.name = name;
    this.position = position
}

Вам нужно будет настроить обратный вызов к операции удержания для фрагментов, чтобы добавить информацию во фрагмент карты.

если вам нужно отправить данные в действие, включите эти данные в намерение intent.put("some_int",1);

Другие вопросы по тегам