在Android中,扩展Lifecycleler Activity,Activity,ActionBarActivity和AppCompactActivity的主要区别是什么? 这些类如何在使用方面有所不同?
活动: FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); Fragment1 fragment = new Fragment1(); Fragment2 fragment2 = new Fragment2(); transaction.replace(R.id.Fragment1, fragment); transaction.addToBackStack(null); transaction.commit(); FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction(); transaction2.replace(R.id.Fragment1, fragment2); transaction2.addToBackStack(null); transaction2.commit(); 在视图中的代码: <fragment android:id="@+id/Fragment1" android:name="com.landa.fragment.Fragment1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_below="@+id/include1" /> 问题是,内容并没有真正被取代 – 它被放在顶部(所以它重叠)。 当我点击后,第一个片段得到正确显示(没有第二个),但最初都是可见的(我只希望最后一个可见)。 我在这里错过了什么?
我正在使用支持包v4的Google API 8(Android 2.2)。 它不会给出任何错误或animation。 交易: FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.content, myFragment); transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); transaction.commit(); animation: slide_in_left.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="700" android:fromXDelta="-100%" android:toXDelta="0%" > </translate> </set> slide_out_right.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="700" android:fromXDelta="0%" android:toXDelta="100%" > </translate> </set> 有人知道这里发生了什么?
关于是否应该使用Activities或Fragments有很多讨论。 例如: 要片段的还是-不以片段 一个活动和所有其他碎片 多less活动与碎片 在Android应用程序中使用Activity或Fragment 我发现的大部分讨论都是在Android 4.2之前发布的。 随着Android 4.2谷歌发明嵌套片段 。 因此,我实际上没有看到任何理由使用多个Activity 。 在Fragments的早期阶段,他们应该被用在应用程序中,同时以舒适的方式支持平板电脑和智能手机 。 因此,例如,你有一个ListView可以打开一个细节View点击一个项目。 在智能手机上,我们将replaceListView并显示详细的View 。 而平板电脑而不是用细节视图replace列表可以同时显示两个Views 。 现在嵌套的Fragments有很多其他的可能性。 如果你想使用一个单一的Activity ,你可以将一般信息存储在Activity ,每个Fragment都可以访问它。 除此之外,嵌套Fragments也可以为孩子的Fragments存储信息。 通过Fragments我可以轻松地重新使用Views ,可以同时显示多个Fragment ,并且可以轻松地形成一个Fragment的对话框。 这一切可能只是一些复制和粘贴操作。 如果我使用“ Activities则必须改变很多才能完成。 我最近实现了一个应用程序 ,我可以轻松地使用两个Fragment-ViewPager使事情变得非常漂亮和dynamic(某种:今天的信息 – 昨天的信息)。 在我看来, Fragments让我们的生活更轻松:) 问题: 为什么我应该使用多个Activity ? 你能提供一个很好的例子,其中多个Activities的使用更有意义,而不是使用Fragments ? 有什么好的例子,你没有别的select,只能使用Activities ? 我认为大多数更大的框架,如地图 , YouTube和公司已经支持Fragments 。 所以我们不必依赖Activities 。 在使用Fragments情况下,处理NavigationBar , TabHosts , ViewPager […]
我怎样才能得到最新的片段实例添加在背后(如果我不知道片段标签&ID)? FragmentManager fragManager = activity.getSupportFragmentManager(); FragmentTransaction fragTransacion = fragMgr.beginTransaction(); /****After add , replace fragments (some of the fragments are add to backstack , some are not)***/ //HERE, How can I get the latest added fragment from backstack ??
我在一个视图(这是一个片段内)有一个淡出的animation,每次animation发生时,视图完成后,视图重新绘制自己。 我发现了一个围绕view.SetVisibility(View.GONE) 。 但它不等待animation完成。 我只想在animation完成后才执行这个setVisibility代码。 什么是最好的办法呢?
我有一个ViewPager和三个Fragment的应用程序。 我试图弄清楚如何让当前Fragment被观看,这样我就可以得到它的论点。 我有一个OnPageChangeListener抓取当前页面的索引,但是 ViewPager.getChildAt(int position); 返回一个View 。 这个View和现在的Fragment之间有什么关系?
如上所述,我将PreferenceFragment子类化并在Activity中显示。 该文档解释了如何在此处侦听首选项更改,但仅限于PreferenceActivity的子类。 由于我没有这样做,我如何倾听偏好改变? 我试过在我的PreferenceFragment实现OnSharedPreferenceChangeListener,但它似乎并没有工作( onSharedPreferenceChanged似乎永远不会被调用)。 这是我的代码到目前为止: SettingsActivity.java public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); } } SettingsFragment.java public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises"; @Override public void onCreate(Bundle savedInstanceState) { […]
我在我的onActivityResult中有我的片段的以下代码: onActivityResult(int requestCode, int resultCode, Intent data){ //other code ProgressFragment progFragment = new ProgressFragment(); progFragment.show(getActivity().getSupportFragmentManager(), PROG_DIALOG_TAG); // other code } 但是,我收到以下错误: Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 有人知道发生了什么,或者我该如何解决这个问题? 我应该注意到我正在使用Android支持包。
我试图将一个活动转换为片段。 runOnUiThread上的错误标记。 过去: GoogleActivityV2从Activity扩展而来。 类ExecuteTask中的runOnUiThread。 类嵌套在活动上的ExecuteTask。 (运行正常)现在: GoogleActivityV2从Fragment扩展而来。 类ExecuteTask中的runOnUiThread。 类嵌套在活动上的ExecuteTask。 (runOnUiThread错误) 这是我的代码 public class GoogleActivityV2 extends SherlockMapFragment implements OnMapClickListener , OnMapLongClickListener , OnCameraChangeListener , TextWatcher { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View rootView = inflater.inflate(R.layout.activity_googlev2, container, false); Init(); adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line); textView = (AutoCompleteTextView) getView().findViewById(R.id.autoCompleteTextView1); return rootView; } public […]