3

Я создал Activity, который содержит две вкладки. Одним из этих вкладок является Карта (API Карт Google v2).Добавить вид снизу фрагмента карты внутри вкладки

Не существует компоновки Activty (не вызывается setContent()), так как экран активности динамически заполняется фрагментом, в зависимости от выбранной вкладки.

Теперь мне нужно добавить TextView в нижней части Карты.

Я предполагаю, что могу продлить MapFragment, а затем работать над методом onCreateView, чтобы вернуть другой вид, включающий как Map, так и TextView. Я точно не знаю, как это сделать. Любое предложение?

EDIT:

actionbar.addTab(actionbar.newTab() 
       .setText("LIST") 
       .setTabListener(new TabListener<ListFragment>(
         this, "list", ListFragment.class))); 


     Log.i("TabListener","chiamata TABLISTENER 2"); 
     actionbar.addTab(actionbar.newTab() 
       .setText("MAP") 
       .setTabListener(new TabListener<CustomMapFragment>(
         this, "map", CustomMapFragment.class))); 

TabListener класс:

public class TabListener<T extends Fragment> implements ActionBar.TabListener { 
    private final Activity mActivity; 
    private final String mTag; 
    private final Class<T> mClass; 
    private final Bundle mArgs; 
    private Fragment mFragment; 

    public TabListener(Activity activity, String tag, Class<T> clz) { 
     this(activity, tag, clz, null); 
    } 

    public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) { 
     mActivity = activity; 
     mTag = tag; 
     mClass = clz; 
     mArgs = args; 

     mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag); 
     if (mFragment != null && !mFragment.isDetached()) { 
      FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction(); 
      ft.detach(mFragment); 
      ft.commit(); 

     } 

    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     if (mFragment == null) { 
      mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs); 
      ft.add(android.R.id.content, mFragment, mTag); 
     } else { 
      ft.attach(mFragment); 
     } 

    } 

    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     if (mFragment != null) { 
      ft.detach(mFragment); 
     } 
    } 

    public void onTabReselected(Tab tab, FragmentTransaction ft) { 

    } 
} 
+0

Опубликовать некоторый код о том, как вы создаете фрагмент и свой xml, я хочу посмотреть, как вы его создали – tyczj

+0

Редактирование сделано! Нет xml, поскольку я не устанавливаю макет. – GVillani82

+0

проверить этот вопрос http://stackoverflow.com/questions/14694119/how-to-add-buttons-at-top-of-map-fragment-api-v2-layout –

ответ

0

Вам нужно разместить MapFragment (или SupportMapFragment) внутри FrameLayout или RelativeLayout. Затем вы можете добавить TextView в тот же макет, что и родной брат MapFragment. Возможно, самый простой способ сделать это - подкласс MapFragment и переопределить метод onCreateView.

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    View view = super.onCreateView(inflater, container, savedInstanceState); 
    FrameLayout wrapper = new FrameLayout(...); 
    TextView tv = new TextView(...); 
    wrapper.addView(view); 
    wrapper.addView(tv); 
    return wrapper; 
} 
Смежные вопросы