Questions tagged «android-fragments»

片段代表Android应用程序中可重用的行为或部分用户界面。

7
FragmentPagerAdapter和FragmentStatePagerAdapter有什么区别?
FragmentPagerAdapter和之间有什么区别FragmentStatePagerAdapter? 关于FragmentPagerAdapterGoogle的指南说: 此版本的分页器最适合用于少数几个通常要分页的静态片段,例如一组选项卡。用户访问的每个页面的片段都将保留在内存中,尽管其视图层次结构在不可见时可能会被破坏。由于片段实例可以保持任意数量的状态,因此这可能导致使用大量内存。对于较大的页面集,请考虑FragmentStatePagerAdapter。 关于FragmentStatePagerAdapter: 当存在大量页面(更像列表视图)时,此版本的分页器会更加有用。当页面对用户不可见时,它们的整个片段可能会被破坏,仅保留该片段的保存状态。与页面FragmentPagerAdapter之间切换时潜在的更多开销相比,这使寻呼机可以保留与每个被访问页面关联的更少的内存 。 所以我只有3个片段。但是它们都是具有大量数据的独立模块。 Fragment1处理一些数据(用户输入)并通过活动将其传递到Fragment2,这很简单ListFragment。Fragment3也是ListFragment。 所以我的问题是:应该使用哪个适配器?FragmentPagerAdapter还是FragmentStatePagerAdapter?

5
了解Fragment的setRetainInstance(boolean)
从文档开始: public void setRetainInstance(布尔值保留) 控制是否在活动重新创建期间保留片段实例(例如,通过配置更改)。这只能与不在后堆栈中的片段一起使用。如果设置,则重新创建活动时片段的生命周期将略有不同: onDestroy()不会被调用(但是onDetach()仍然会被调用,因为该片段正在从其当前活动中分离出来)。 由于不会重新创建片段,因此不会调用onCreate(Bundle)。 onAttach(Activity)和onActivityCreated(Bundle)仍将被调用。 我有一些疑问: 片段是否还保留其视图,还是会在配置更改时重新创建该视图?“保留”到底是什么意思? 用户离开活动时,碎片会被破坏吗? 为什么它对后堆栈上的片段不起作用? 在哪些使用案例中使用此方法有意义?

23
重复ID,标签null或父ID,以及com.google.android.gms.maps.MapFragment的另一个片段
我有一个带有三个标签的应用程序。 每个选项卡都有其自己的布局.xml文件。main.xml有自己的地图片段。这是在应用程序首次启动时显示的内容。 一切正常,除了我在选项卡之间切换时。如果尝试切换回地图片段选项卡,则会收到此错误。切换到其他选项卡之间即可。 这有什么问题吗? 这是我的主类和main.xml以及我使用的相关类(您还将在底部找到错误日志) 主班 package com.nfc.demo; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; import android.widget.Toast; public class NFCDemoActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); bar.addTab(bar .newTab() .setText("Map") .setTabListener( new TabListener<MapFragment>(this, "map", MapFragment.class))); bar.addTab(bar …


10
不推荐使用Android Fragment onAttach()
我已经更新了我的应用程序以使用最新的支持库(版本23.0.0),我发现它们不赞成使用Fragment类的onAttach()函数。 代替: onAttach (Activity activity) 下雪了: onAttach (Context context) 由于我的应用使用了弃用之前通过的活动,因此我认为可能的解决方案是: @Override public void onAttach(Context context) { super.onAttach(context); activity = getActivity(); } 那是正确的方法吗? 更新: 如果我运行的设备的API低于23,则甚至不会调用新的onAttach()。我希望这不是他们的意图! 更新2: SDK的最新更新已解决问题。 我已经在API 22设备上进行了测试,并且正在调用onAttach(Context)。 点击此处,查看我几周前打开的错误报告以及Google员工的回答。

13
从片段中调用活动方法
尝试从片段中调用活动中的方法。我希望片段提供方法数据并在方法返回时获取数据。我想实现类似于调用静态方法的方法,但是不使用静态方法,因为它会在活动中造成问题。 片段的新手,所以我需要一个简单而教学法的解释! 谢谢!

20
动态更新ViewPager?
我无法更新ViewPager中的内容。 FragmentPagerAdapter类中的InstantIateItem()和getItem()方法的正确用法是什么? 我仅使用getItem()实例化并返回片段: @Override public Fragment getItem(int position) { return new MyFragment(context, paramters); } 这很好。除了我不能更改内容。 所以我发现了这一点:ViewPager PagerAdapter不更新视图 “我的方法是将setTag()方法用于instantiateItem()方法中的任何实例化视图” 现在,我想实现实例化item()。但是我不知道我必须返回什么(类型为Object)以及与getItem(int position)的关系是什么? 我阅读了参考资料: 公共抽象片段getItem(int位置) 返回与指定位置关联的片段。 public Object InstantiateItem(ViewGroup容器,int位置) 创建给定位置的页面。适配器负责将视图添加到此处给定的容器中,尽管它仅必须确保在从finishUpdate(ViewGroup)返回时完成此操作。参量 container包含页面的显示视图。position要实例化的页面位置。 退货 返回表示新页面的Object。这不必是View,但可以是页面的其他容器。 但我还是不明白。 这是我的代码。我正在使用支持包v4。 ViewPagerTest public class ViewPagerTest extends FragmentActivity { private ViewPager pager; private MyFragmentAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) …

20
将活动中的数据发送到Android中的片段
我有两节课。首先是活动,其次是我有一些东西的片段EditText。在活动中,我有一个带有异步任务的子类,在方法中,doInBackground我得到了一些结果,并将其保存到变量中。如何将变量从子类“我的活动”发送到此片段?

6
onActivityResult中的requestCode错误
我正在从我的片段开始一个新的活动 startActivityForResult(intent, 1); 并想在Fragment的父Activity中处理结果: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG, "onActivityResult, requestCode: " + requestCode + ", resultCode: " + resultCode); if (requestCode == 1) { // bla bla bla } } 问题是我从未收到requestCode过刚刚寄到的邮件startActivityForResult()。 我得到了类似的东西0x40001,0x20001等等。文档对此无话可说。有任何想法吗?

9
add(),replace()和addToBackStack()之间的区别
调用这些方法之间的主要区别是: fragmentTransaction.addToBackStack(name); fragmentTransaction.replace(containerViewId, fragment, tag); fragmentTransaction.add(containerViewId, fragment, tag); 替换一个已经存在的片段,并向活动状态添加一个片段,并向后堆栈添加活动,这意味着什么? 其次,使用findFragmentByTag(),此搜索是否搜索add()/ replace()方法或addToBackStack()方法添加的标记?

30
Android片段找不到ID的视图?
我有一个片段想添加到视图中。 FragmentManager fragMgr=getSupportFragmentManager(); feed_parser_activity content = (feed_parser_activity)fragMgr .findFragmentById(R.id.feedContentContainer); FragmentTransaction xaction=fragMgr.beginTransaction(); if (content == null || content.isRemoving()) { content=new feed_parser_activity(item.getLink().toString()); xaction .add(R.id.feedContentContainer, content) .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) .addToBackStack(null) .commit(); Log.e("Abstract", "DONE"); } 当执行此代码时,我在调试中得到以下错误。 java.lang.IllegalArgumentException: No view found for id 0x7f080011 for fragment feed_parser_activity{41882f50 #2 id=0x7f080011} feed_parser_activity是在xml中设置为Fragment布局的Fragment。 我正在使用FragmentActivity托管持有的Fragment Layout feed_parser_layout。 我在上面正确编码吗?

12
片段超过另一个片段问题
当我#77000000在另一个片段(我们称其为主要片段)上显示一个片段(背景为全屏)时,我的主要片段仍会对点击做出反应(即使没有看到也可以单击按钮)。 问题:如何防止点击第一个(主要)片段? 编辑 不幸的是,我不能只隐藏主片段,因为我在第二个片段上使用了透明背景(因此,用户可以看到后面的内容)。

18
替换ViewPager中的片段
我试图使用片段与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 …

9
活动,AppCompatActivity,FragmentActivity和ActionBarActivity:何时使用哪个?
我来自iOS,它很容易,您只需使用UIViewController。但是,在Android中,事情似乎要复杂得多,对于特定的API级别,使用某些UIComponent。我正在阅读适用于Android的BigNerdRanch(这本书大约有2年历史了),他们建议我使用Activity来托管我的FragmentActivities。但是,我以为Activity已弃用。 因此,对于API级别22(对API级别15或16的最低支持),我到底应该使用什么来托管组件以及组件本身?所有这些都有用途吗,还是我应该只使用一两个?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.