我正在尝试使用Fragment ViewPager使用FragmentPagerAdapter.我想要实现的是将位于第一页上的片段替换为另一片段ViewPager.
寻呼机由两页组成.第一个是FirstPagerFragment,第二个是SecondPagerFragment.单击第一页的按钮.我想FirstPagerFragment用NextFragment 替换它.
我的代码如下.
public class FragmentPagerActivity extends FragmentActivity {
static final int NUM_ITEMS = 2;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
/**
* Pager Adapter
*/
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int …Run Code Online (Sandbox Code Playgroud) 我使用的是ViewPager连同FragmentStatePagerAdapter主办三个不同的片段:
当我想Fragment1从ViewPager在FragmentActivity.
有什么问题,我该如何解决?
下面是我的代码,3 Fragment classes每个代码都嵌入了3个选项卡中的每一个ViewPager.我有一个菜单选项.如图所示onOptionsItemSelected(),通过选择一个选项,我需要更新当前可见的片段.要更新,我必须调用片段类中的方法.有人可以建议如何调用该方法吗?
public class MainActivity extends ActionBarActivity {
ViewPager ViewPager;
TabsAdapter TabsAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewPager = new ViewPager(this);
ViewPager.setId(R.id.pager);
setContentView(ViewPager);
final ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//Attaching the Tabs to the fragment classes and setting the tab title.
TabsAdapter = new TabsAdapter(this, ViewPager);
TabsAdapter.addTab(bar.newTab().setText("FragmentClass1"),
FragmentClass1.class, null);
TabsAdapter.addTab(bar.newTab().setText("FragmentClass2"),
FragmentClass2.class, null);
TabsAdapter.addTab(bar.newTab().setText("FragmentClass3"),
FragmentClass3.class, null);
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch …Run Code Online (Sandbox Code Playgroud) 我有问题使我的片段通过Activity使用FragmentPagerAdapter,作为帮助类来实现对标签的管理以及连接ViewPager关联的所有细节TabHost.我的实现FragmentPagerAdapter与Android示例项目Support4Demos提供的一样.
主要问题是FragmentManager当我没有Id或Tag时,如何从特定片段中获取特定片段?FragmentPagerAdapter正在创建片段并自动生成Id和标签.
我有一个带有ViewPager三个和三个Fragment的应用程序.我正在试图弄清楚如何让当前Fragment被观看,以便我可以得到它的论据.
我OnPageChangeListener抓住了当前页面索引,但是
ViewPager.getChildAt(int position);
Run Code Online (Sandbox Code Playgroud)
返回一个View.这View和现在的关系是什么Fragment?
我有Activity一个ViewPager.我还有一个Dialog将检索列表,其中包含用户将选择的一些项目.现在,如何更新Fragment项目应显示的位置作为附加到此片段的新视图?
这是我ViewPager的适配器:
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 1;
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
default:
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这是Fragment:
public class Fragment1 extends Fragment{
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public void onCreate(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) 我试图在Android中实现片段通信,如android指南中的那个http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
但我的应用程序崩溃,因为getSupportFragmentManager().findFragmentById()返回null.我的实施有什么问题.
代码如下:
该程序只是通过第一个fragmnet上的按钮单击将输入文本从一个片段发送到另一个片段textView区域.我有一个activity_main.xml和两个片段布局(两个单独的xml文件而不是activity_main.xml中的一部分)
Frag1.java
public class Frag1 extends Fragment {
public Frag1(){
}
buttonClickListener buttonListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
buttonListener = (buttonClickListener) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnButtonPressListener");
}
}
View myFragmentView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myFragmentView = inflater.inflate(R.layout.frag1, container, false);
//SetValue Button
Button setValueButton = (Button) myFragmentView.findViewById(R.id.setValueButton);
setValueButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
buttonListener.onButtonPressed("Message received"); …Run Code Online (Sandbox Code Playgroud) 使用时,FragmentStatePageAdapter我得到这样的片段:
@Override
public Fragment getItem(int position) {
return new SuperCoolFragment();
}
Run Code Online (Sandbox Code Playgroud)
但是,稍后我的代码我需要找到这个片段来设置属性.在我使用片段的应用程序的其他一些部分,我基本上标记它们并使用它们来查找它们,findFragmentByTag(TAG)但现在我不知道该怎么做.
如何使用FragmentStatePageAdapter?找到碎片?
我正在构建一个使用Fragment的应用程序和一个MainActivity在同一个ViewPager中显示不同片段的应用程序来复制典型MVC应用程序的行为.
问题是,我不知道如何以编程方式更新片段以更新ViewPager新的片段更改
例如,我有这个Fragment显示图表,(在我的意图),当我setFragment(int interval, Point[] snodePoint)从主要调用时,图表应该更新ViewPager
public class LineFragment extends Fragment {
static int interval;
static Point snodePoints[];
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_linegraph, container,
false);
Bundle bundle = this.getArguments();
ChartConfig cg = bundle.getParcelable("FragmentData");
snodePoints = cg.getPoints();
interval= cg.getInterval();
Line l = new Line();
for(int i=0; i<snodePoints.length; i++){
LinePoint p = new LinePoint();
Point sp=snodePoints[i];
p.setX(sp.getX());
p.setY(sp.getY());
l.addPoint(p)
}
l.setColor(getResources().getColor(R.color.green));
LineGraph li …Run Code Online (Sandbox Code Playgroud) 我有ViewPager一些片段.每个片段都有一个ListViewa SlidingDrawer(在滑动前不可见)和一个ArrayAdapter.
适配器已启用onCreateView(),这会减慢滑动速度,因为每次刷卡时都必须加载30个列表项,因为正在创建新的片段.
我的问题是,是否可以在ViewPager闲置时滑动后设置适配器?或者,还有更好的方法?在展开SlidingDrawer时,需要已经加载List.