2016-05-06 4 views
0

Я сделал вкладку по умолчанию в android studio. , и я попытался показать 2 вида, используя tab1 и tab2. Они наследуют LinearLayout. Ниже приведен их код (Tab1).Как показать виды раздутого макета в Tabbed Activity?

public class Tab1 extends LinearLayout { 
    View rootView; 

    public Tab1(Context context) { 
     super(context); 
     init(context); 
    } 

    public Tab1(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    //inflater 
    private void init(Context context) { 
     LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     rootView = inflater.inflate(R.layout.fragment_main_tab1, this, true); 
    } 

    public View getView(){ //getter 
     return rootView; 
    } 
} 

Вот onCreateView метод, который я сделал в неплатеже tabbed activity. Я хотел показать tab1, tab2 на каждой вкладке.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView; //return view 
    Tab1 tab1 = new Tab1(StaticManager.applicationContext); //inflated activity 
    Tab2 tab2 = new Tab2(StaticManager.applicationContext); //inflated activity 

    if (getArguments().getInt(ARG_SECTION_NUMBER) == 1) { 
     container.addView(tab1); 
     rootView = tab1.getRootView(); 
    } else { 
     container.addView(tab2); 
     rootView = tab2.getRootView(); 
    } 
    return rootView; 
} 

и сообщение об ошибке это,

05-06 14:36:57.972 19264-19264/kr.eyeballs.mobilecloudchattingapp E/AndroidRuntime: FATAL EXCEPTION: main 
05-06 14:36:57.972 19264-19264/kr.eyeballs.mobilecloudchattingapp E/AndroidRuntime: Process: kr.eyeballs.mobilecloudchattingapp, PID: 19264 
05-06 14:36:57.972 19264-19264/kr.eyeballs.mobilecloudchattingapp E/AndroidRuntime: java.lang.StackOverflowError 

Это работа dosen't. Как это исправить?

Если вы не понимаете, что я имею в виду, сообщите мне, что добавит больше информации.

ответ

1

Вы вызвали неправильный метод, вы должны позвонить getView() вместо getRootView() в свой фрагмент. Мирное кода в ViewGroup вызывают на StackOverflow:

/** 
    * @hide 
    */ 
    @Override 
    public void resetResolvedLayoutDirection() { 
     super.resetResolvedLayoutDirection(); 

     int count = getChildCount(); 
     for (int i = 0; i < count; i++) { 
      final View child = getChildAt(i); 
      if (child.isLayoutDirectionInherited()) { 
       child.resetResolvedLayoutDirection(); 
      } 
     } 
    } 
+0

Это работает! спасибо :) Я был смущен между getRootView и getView haha – eyeballs

Смежные вопросы