Articles of android fragments

我可以注册MVP Presenter里面的片段

我一直在关注Google提供的MVPdevise模式,以重构我的应用程序。 我有一个MainActivity和许多碎片,对于每个片段创build活动似乎都很麻烦,所以我一直在考虑在片段中注册演示者。 我看到的是每个片段都注册了它自己的主持人,但是我不确定它有多less错误… 🙂 所以这里是我的演示者: public class FirstPresenter implements FirstContract.Presenter { private final FirstContract.View mView; public FirstPresenter(FirstContract.View view) { mView = view; } @Override public void start() { Log.e(TAG, "Start"); } } 这是我的片段: public class FirstFragment extends Fragment implements FirstContract.View { private FirstContract.Presenter mPresenter; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container , Bundle savedInstanceState) […]

以编程方式将片段添加到视图组

基本上这是我的平板电脑横向的应用程序(想法):两个碎片,左边的片段是一个由resource.xml文件填充的列表片段(有工作)。 正确的片段应该根据用户点击的列表项dynamic地改变片段和布局。 谷歌search到目前为止告诉我,我需要编程添加和删除片段到一个视图组来做到这一点。 是对的吗? 基本上这个问题是: 如何创build视图组和哪里(Main.java或menufragment.java)? 我如何把dynamic的“用户点击ID 3列表,所以添加片段3到视图组” 我要添加到我的main.xml文件? 在那里得到了listfragment的片段,为dynamic视图组添加什么? 编辑: 所以这就是我的行为看起来像:Main.java public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 这是我的listFragment MenuFragment.java public class MenuFragment extends ListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { […]

android onCreateOptionsMenu在恢复状态时调用两次

下面是我创build的一个简单的Android应用程序来演示我的问题: public class OptionMenuTest extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("test", "create activity"); setContentView(R.layout.options_layout); if(getFragmentManager().findFragmentByTag("frag") == null) { getFragmentManager().beginTransaction().add(R.id.option_fragment_container, new OptionMenuFragment(), "frag").commit(); } } @Override protected void onSaveInstanceState(Bundle outState) { Log.d("test", "saving Activity state"); super.onSaveInstanceState(outState); } @Override public boolean onCreateOptionsMenu(Menu menu) { Log.d("test", "create Activity options menu"); menu.add("activity"); return true; } […]

Android中片段的交易导致空白屏幕

如果有帮助,我想要的是类似于这个谷歌教程做的 但是在转换之前会创build一个片段。 如果我这样做,过渡正常; 但我不能使用这种方法 ===== 瞄准API 7+我只是想在整个屏幕上看到一个片段,并使用一个button(一个绘制的button,一个onTouch事件),然后交替到第二个片段,反之亦然。 但是,当我用第二个replace第一个片段时,或者如果我使用fragmentTransaction.show和fragmentTransaction.hide; 我可以切换两次,然后我得到空白屏幕。 我不想在后台。 我在MainActivity的onCreate中创build片段: DiceTable diceTable = new DiceTable(); Logger logger = new Logger(); fragmentTransaction.add(diceTable, DICETABLE_TAG); fragmentTransaction.add(logger, LOGGER_TAG); fragmentTransaction.add(R.id.fragment_container, logger); fragmentTransaction.add(R.id.fragment_container, diceTable); 然后在一个方法(从碎片调用)我做开关: Logger logger = (Logger)fragmentManager.findFragmentByTag(LOGGER_TAG); DiceTable diceTable = (DiceTable)fragmentManager.findFragmentByTag(DICETABLE_TAG); if (diceTable.isVisible()) { fragmentTransaction.replace(R.id.fragment_container, logger); fragmentTransaction.commit(); fragmentTransaction.hide(diceTable); fragmentTransaction.show(logger); } else if (logger.isVisible()) { fragmentTransaction.replace(R.id.fragment_container, diceTable); fragmentTransaction.commit(); fragmentTransaction.hide(logger); […]

为什么build议不要使用UI保留片段?

我用ui读取保留片段,并在视图上引用可能导致内存泄漏。 比我创buildtesting应用程序与片段,我存储一些参考视图和设置setRetaineInstance(true),但几个屏幕旋转不会导致任何泄漏。 MAT说我只有一个父活动的例子。 我做错了什么? 在哪些情况下用ui保留片段会导致泄漏? RetainInstanceActivity.java public class RetainInstanceActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(android.R.id.content, RetainFragment.newInstance()) .commit(); } }} RetainFragment.java public class RetainFragment extends Fragment { private View mLogin; private View mPassword; private View ImageView; public static RetainFragment newInstance() { final RetainFragment fragment = […]

NavigationDrawer活动与片段callback和应用程序业务逻辑混杂在一起

一个包含NavigationDrawer的Activity应该可以玩弄它的片段。 我的问题是,抽屉必须在应用程序的所有可能的屏幕上可用,这使得我唯一的活动MainActivity非常混乱的片段callback代码和不同种类的导航/业务逻辑。 随着应用程序的增长,在整个活动中变得越来越难,我开始考虑可能的替代方法。 新方法必须保持原始的相同的视觉行为,并消除杂乱。 除了导航抽屉事件,还有多个片段也包含导航/业务逻辑,这也是由MainActivity处理的。 例如,一个片段可能包含3个或更多的button,可以启动其他片段或执行一些交叉关注的业务逻辑。 因此,由MainActivity实现的监听器接口的数量增长,并且这个时刻达到了20个。您可能会认为它看起来不舒服或感觉不舒服。 我想我可能会解耦多个NavigationDrawer活动,以减轻维护。 这意味着更大的资源消耗和轻微的视觉效果偏差,因为新的活动只有在抽屉closures之后才会启动,与原来的方法立即改变碎片相反。 你认为这是一个坏主意吗? 如何改进? 或者有更好的解决scheme? 谢谢。 UPD改进了描述。

导航抽屉速度慢,视图复杂

在我的应用程序我使用导航抽屉,它工作得很好。 但是,如果要显示的片段包含很多TextView,ImageView和布局,当我点击该项目时,视图是毛刺的。 我会改善这个滞后。 我的Galaxy Nexus和Nexus 4的效果是一样的,所以我认为问题是我在同一时间有2个命令。 //On item click – First comand (Close Drawer) mDrawerList.setItemChecked(position, true); setTitle(mStringTitles[position]); mDrawerLayout.closeDrawer(mDrawerView); // Second comand (Replace Fragment) getFragmentManager() .beginTransaction() .replace(R.id.firts_view, new FragmentNew()) .commit(); 所以我想我会在菜单closures后立即更换这个片段..有什么想法?

如何从活动更新Android片段?

我想根据从互联网下载的数据定期更新片段的显示。 我已经创build了一个定时器和Runnable定期检索这个数据以及片段内的一个方法来更新它,但我似乎无法弄清楚如何获得从片段的活动引用来更新它。 我有以下代码主要是由ADT的Android项目向导生成的: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(tag, "onCreate()::Entering…"); setContentView(R.layout.activity_main); // Set up the action bar. final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Create the adapter that will return a fragment for each of the // primary sections of the activity. mSectionsPagerAdapter = new SectionsPagerAdapter( getSupportFragmentManager()); // Set up the ViewPager with the […]

在Android中为animation片段事务设置“z”索引或相机

我试图animation两个片段之间的交易,这个代码: http : //developer.android.com/training/animation/cardflip.html 但结果正是这个: http : //developer.android.com/training/animation/anim_card_flip.mp4 不过,我想要这个结果: https : //www.youtube.com/watch?v = 52mXHqX9f3Y 不同的是,即使两者都旋转180度,第二个用不同的相机(Z轴)。 所以问题是: 我可以将Z指数应用于animation师吗? 或者,我可以提供一个animation类,而不是包含animation的XML文件来animation片段转换? 谢谢。 编辑:检查差异。

无法保存和恢复嵌套的片段?

我有一个嵌套的片段,我试图恢复状态给定方向的变化。 所以首先我的设置如下: Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment 在我的孩子片段我有onSaveInstance代码如下: @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // Serialize the current dropdown position. outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar() .getSelectedNavigationIndex()); } 但是,当我在所有LifeCycle事件中定位设备时,都会返回null的savedInstance状态。 我正在做一个ChildFragment不正确吗? 为什么我的状态没有得到保存和返回?