Reputation: 2465
I am using android fragments and view pager widgets. I want to add generically more fragments to a defined layout.
The issue is
when i try to enter a fragment through code, i always got an error.
below is my code
public class Video extends FragmentActivity {
MyPageAdapter pageAdapter;
ViewPager pager;
LinearLayout Video_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
Video_content = (LinearLayout)findViewById(R.id.Content);
FragmentTransaction t = getFragmentManager().beginTransaction();
//Add first fragment
MyFragment myFragment1 = new MyFragment();
I got Error on this line
t.add(Video_content.getId(), myFragment1, "myFirstFragment");
/*Video_fragment myFragment2 = new Video_fragment();
t.add(Video_content.getId(), myFragment2, "mySecondFragment");*/
t.commit();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels;
Button button1=(Button)findViewById(R.id.Tvshows);
Button button2=(Button)findViewById(R.id.movies);
Button button3=(Button)findViewById(R.id.music);
List<Fragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
pager.setCurrentItem(0);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
pager.setCurrentItem(0);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
pager.setCurrentItem(1);
}
});
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
pager.setCurrentItem(2);
}
});
}
private List<Fragment> getFragments(){
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(MyFragment.newInstance("Tv Shows"));
fList.add(MyFragment.newInstance("Movies"));
fList.add(MyFragment.newInstance("Music Videos"));
return fList;
}
private class MyPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
The Error says: Change type of MyFragment1 to Fragment
I have imported following imports
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
Here is the code of MyFragment class:
import android.support.v4.app.Fragment;
public class MyFragment extends Fragment{
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
View v;
Handler updateHandler;
public static final MyFragment newInstance(String message)
{
MyFragment f = new MyFragment();
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);
v = inflater.inflate(R.layout.video_fragment, container, false);
TextView messageTextView = (TextView)v.findViewById(R.id.textView);
messageTextView.setText(message);
if(message.equals("Tv Shows"))
{
}
if(message.equals("Movies"))
{
}
if(message.equals("Music Videos"))
{
}
return v;
}
My Question is:
How can i add generic layouts through fragment and use view pager simultaneously?
Upvotes: 2
Views: 92
Reputation: 8621
Are you sure you are using the correct FragmentTransaction
and FragmentManager
classes ?
I believe this
getFragmentManager().beginTransaction();
should be replaced by this
getSupportFragmentManager().beginTransaction();
Upvotes: 1
Reputation: 17401
change:
getFragmentManager()
to
getSupportFragmentManager()
When you are initializing t
do use supportFragmentManager
FragmentTransaction t = getSupportFragmentManager().beginTransaction();
Upvotes: 1