A fragment is launched which has a list view in it, from an activity.
Now being on this screen switch to setting and change the font size/style the list view duplicates, changing the font size/style again make the list view 3 times and so on..
I am not getting why it is happening??
I checked the onCreateView(....) of fragment if the the view is not null then return the same view.
private view myView;
.
.
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(myView!=NULL) return myView;
.
.
myView = inflater.inflate(R.layout.activity_frag, container, false);
.
.
return myView;
}
Related
I have a layout with 1 Textview and 1 RecyclerView. When this layout is opened both the text view and recycler view show up. However, when I inflate this layout in Android Studio's default tabbed activity, only the TextView is there.
Here's my onCreateView() method for the tabbed activity
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_single, container, false);
return rootView;
}
The activity_single layout contains the textview and recyclerview.
These are the screenshots of the two activities:
Your are not setting up RecycleView in this fragment so it wont show any recycle view in that fragment
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_single, container, false);
//Setup your recycle view here with its adapter
return rootView;
}
i am creating the multiple dynamic views in android and my fragment using the layout of parent fragment and in child fragment i am creating the dynamic views but i am not able to bind those dynamic views using Butterknife.
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
this is the on create
// Inflate the layout for this fragment
View view = super.onCreateView(inflater, container, savedInstanceState); this.container.addView(inflater.inflate(R.layout.overall_sport_performance_row, null), 5);
i have one textview in the overall_sport_performance layout and i want to use that using butterknife
I don't really understand your solution, if your Fragment's view is overall_spot_performance.xml, do like this:
#BindView(R.id.your_text_view_id)
protected TextView textView;
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = View.inflate(getContext(), R.layout.overall_sport_performance_row, null);
Butterknife.bind(this, view);
return view;
}
No need to bind the TextView dynamically. However if you still need to bind it dynamically, you can use findById method. I did not test it but should work like this:
View dynamicView = inflater.inflate(R.layout.overall_sport_performance_row, null);
this.container.addView(dynamicView, 5);
TextView textView = ButterKnife.findById(dynamicView, R.id.your_text_view_id);
I want to set text of a TextView that is inside a layout file,
I tried setContentView() but it isnt working since i am using fragments.
I tried using getResources().getLayout(R.layout.abc);
It returns null
I tried setContentView() but it isnt working since i am using
fragments
That's wrong. You have to override onCreateView and inflate and return the layout you want to show, and you can use onCreateView, and use its first parameter, View view, to call findViewById and access the widgets in your layout. You can read more here and here
inside fragment you can set view inside function onCreateView(), use below code
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle b) {
View view = (LinearLayout) inflater.inflate(R.layout.my_layout, container, false);
return view;
}
here my_layout should be the name of layout file,
now you can get view of it inside function onviewcreated()
public void onViewCreated(View view, Bundle savedInstanceState){
// here you can get your textview and set its value
}
thumbs up, if you find my answer correct
You can inflate your layout like this:
ViewGroup group = LayouInflate.from(context).inflate(R.layout.abc,null);
TextView tv = group.findViewById(R.id.xxx);
you have to inflate the layout through the onCreateView method and then return the View.
#Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.your_layout, container, false);
TextView yourTextView = (TextView)rootView.findViewById(R.id.yourTextViewId);
return rootView;
}
I have three fonts in a listView, whichever the user selects it has to effect the textView in the Pager. But, it is not updating the font in that position of the ViewPager. It is getting updated after moving to one or two slides/pages. Please help me, Thanks.
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_main, container, false);
// Set Slide Object Value
TextView mDesc = (TextView)rootView.findViewById(R.id.textTitle);
m_txTitle.setTypeface(SettingsABC.getTypeface(fontStyle));
fontStyle = Typeface.createFromAsset(getAssets(), "cookies.ttf");
mDesc.setTypeface(fontStyle);
}
I have an Android fragment. When I'm creating view I fill fields from layout with values from an model.
and at one point I want to recreate view using the same class model but with other values.
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater
.inflate(R.layout.item_view, container, false);
editText = (EditText) v.findViewById(R.id.question_text);
questionText.setText(myModel.getName());
---------------
}
I have a private function which will call at on click on view
private void recreateView(MyModel model){
myModel = model;
//here I want to recall onCreateView or something like that but I don't know if that is ok, or is a more simple way to do that
}