Articles of android fragments

从configuration改变片段后,现在共享FrameLayout?

应用程序问题: 当方向改变时,应用程序遇到这些问题: 现在FragmentA和FragmentC都占据了FrameLayout容器。 什么工作:一切工作,因为我想…在旋转屏幕之前。 活动描述简介: EditActivity目的:编辑collections和项目字段。 以编程方式创build以下活动片段: FragmentA – 用于编辑收集字段的片段 FragmentB – collections中物品的ListFragment FragmentC – 用于编辑项目字段的片段。 初始布局:FragmentA位于FragmentB的顶部,每个都在自己的FrameLayouts中。 当用户单击FragmentB的列表视图项时:用FragmentCreplaceFragmentA以允许用户编辑该项的字段。 现在FragmentC坐在FragmentB上面。 这似乎是一个非常简单的概念:活动的顶部是用于编辑整个集合的属性或集合中的单个项目。 我不觉得我做了什么奇妙的布局,所以我有点困惑,一个简单的旋转的电话(模拟器)导致这些问题,我有这样一个卑鄙的时间试图解决。 为什么Android的片段指南的例子不适合我:他们的例子是非常像我在做什么,但他们的细节片段要么是在一个新的活动打开,要么在当前的活动在自己的框架,他们不做任何交换片段,所以我不能收集他们将如何使用onSaveIstanceState来保留可见的片段,然后在onCreate中使用该信息来重新创build在方向改变之前存在的UI。 编辑:通过放大和放入XML片段中的一个问题,解决了永久旋转“加载…”的问题。

如何使用YouTubePlayerFragment与YouTube API一起播放video?

我试图在我的片段播放video。 但是,我不能得到它的工作。 如果我延长“YoutubeFailureRecovery”,我会得到: 09-06 21:56:40.472:E / AndroidRuntime(4946):导致:java.lang.IllegalStateException:YouTubePlayerView只能使用扩展YouTubeBaseActivity作为上下文的Activity来创build。 这是我的.xml: <com.google.android.youtube.player.YouTubePlayerView android:id="@+id/player" android:layout_width="match_parent" android:layout_height="wrap_content"/> 这是class级: public class YoutubeFragment extends YoutubeFailureRecovery { YouTubePlayer player; YouTubePlayerView playerView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle arg2) { // TODO Auto-generated method stub return inflater.inflate(R.layout.detailview, container, false); } @Override public void onStart() { // TODO Auto-generated method stub super.onStart(); playerView […]

MapView(android maps api v2)里面的片段布局不显示

我使用viewpager在2个操作栏选项卡(用于这种导航使用eclipse向导)之间滑动。 我正在使用android maps v2 api。 我想在我的一个标签(我猜mapfragment是不可能的)内的mapview,button和textview。 我膨胀我的片段的XML从这样的布局: public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.first_tab_fragment, container, false); } } 我的first_tab_fragment.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.google.android.gms.maps.MapView android:id="@+id/mapview" android:layout_width="100dip" android:layout_height="100dip" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView1" android:layout_marginRight="15dp" > </com.google.android.gms.maps.MapView> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView1" android:layout_centerHorizontal="true" android:text="Button" /> […]

FragmentManager popBackStack不会删除片段

我正在使用Fragments实现菜单导航。 所以我从Home开始,然后用户可以导航到每个部分的不同部分和细节。 当用户更改部分时,我在fragmentmanager的backstack上调用pop,直到到达Home,然后加载新的部分。 这一切都按预期工作。 但是我得到这个问题: 加载一个调用onResume()的setHasOptionsMenu(true) 加载另一个部分(老的部分,它被放置在堆栈之外)。 我明白了。 没有菜单显示 离开应用程序(例如,去Android Laucher活动),然后当我回来时,我看到正确的部分,但它显示旧的片段的菜单。 我已经迭代了后台并打印每个片段,而不是菜单的片段。 我在onResume()方法( setHasOptionsMenu(true)被标记的地方)上放了一个debugging标记,它确实进入了这里,所以碎片仍然在某处。 我想知道如果我做错了什么,我怎么能解决它,thx 更新: 我正在使用此代码来加载新的片段 fm.beginTransaction() .add(container, sectionFragment.getFragment()) .addToBackStack(sectionFragment.getFragmentName()) .commit(); 而为了删除: private void clearStack(){ int count = fm.getBackStackEntryCount(); while(count > 1){ fm.popBackStack(); count–; } } 注1:我使用添加替代,因为我不想松散我的片段状态,当我从细节部分导航回来。 当我加载另一个不同的部分,然后我调用clearStackpopup堆栈高达1,然后加载新的片段。 最后,我调用executePendingTransactions()完成从事务中删除碎片。 注2:我看到它正在我的片段onDestroy()方法进入,所以它被认为是被销毁。 但是我不知道为什么在主要活动恢复时再次调用它。

NullPointerException:尝试在空对象引用上调用虚拟方法'int java.util.ArrayList.size()'

我是Fragments和自定义ListView适配器的新手。 任何人都可以帮我一把吗? 我有我的Fragment ,我有我的ListView public class RecordingListFragment extends Fragment implements OnItemClickListener { ListView mListView; TextView emptyView; Button options, delete,edit; ArrayList<String> recordings = null; RecordingsListAdapter mAdapter; public RecordingListFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.recording_list_fragment, container,false); options = (Button) rootView.findViewById(R.id.options); edit = (Button) rootView.findViewById(R.id.edit); delete = (Button) rootView.findViewById(R.id.delete); […]

碎片getView()总是返回null由FragmentStatePagerAdapter创build的碎片

我一直在阅读很多有关片段的内容。 发现其他人有问题检索片段视图,因为空总是返回,但没有答案解决我的问题。 我想要做的是创build一个图片库。 我有一个保存图像视图的片段。 为了显示片段,我使用了android.support.v4.view.ViewPager。 为了提供ViewPager我使用了一个android.support.v4.app.FragmentStatePagerAdapter 。 问题是,当一切都build立和图像显示,我想保存当前显示的图像到磁盘。 所以我需要得到当前片段imageview,但我不能因为fragment.getView()总是为空,与片段相关的活动也是空的,我不明白为什么。 这里有一些代码,看看有没有人可以帮忙: 这是我的片段: public class ImageViewURLFragment extends Fragment { String _url; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // The last two arguments ensure LayoutParams are inflated // properly. View rootView = new ImageViewURL(getActivity(), _url); return rootView; } public void setImageURL(String imgURL) { _url=imgURL; […]

java.lang.IllegalStateException:没有活动

我正在构build一个Android应用程序,我希望我的第一个活动由两个选项卡组成,一个用于用户的configuration文件,另一个用于朋友的活动。 对于这些标签,我select了一个TabHost,因为我的Sherlock操作栏已经在使用列表导航移动到其他活动,所以我不能使用操作栏中的标签导航。 该应用程序工作了一段时间,但现在只有一个我的标签工作,只要我尝试移动到第二个标签,我得到一个java.lang.IllegalStateException:没有活动 我为这个错误添加了Logcat输出,虽然我不确定它有帮助,因为没有追溯到我的代码。 我尝试用FragmentTabHostreplaceTabHost,但错误仍然存​​在… 任何人都可以向我指出这个错误的起源/含义? 提前致谢 ! LOGCAT: 04-03 08:19:39.380: W/dalvikvm(958): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 04-03 08:19:39.400: E/AndroidRuntime(958): FATAL EXCEPTION: main 04-03 08:19:39.400: E/AndroidRuntime(958): java.lang.IllegalStateException: No activity 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1474) 04-03 08:19:39.400: E/AndroidRuntime(958): at […]

“RecyclerView:没有适配器连接; 跳过布局“为recyclerview在片段

我得到这个错误,但我不知道是什么原因导致它…也许是这样的事实,这是在一个片段,而不是在活动本身初始化。 编辑:包括StatsAdapter代码 public class StatsFragment extends Fragment { private RecyclerView mRecyclerView; private LinearLayoutManager mLinearLayoutManager; private RecyclerView.Adapter mAdapter; private String[] myDataset = new String[]{"hello", "world", "yolo"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_stats, parent, false); mRecyclerView = (RecyclerView) v.findViewById(R.id.cardList); mRecyclerView.setHasFixedSize(true); mAdapter […]

来自ListFragment的上下文菜单

我正在尝试创build一个包含三个片段的主屏幕的平板电脑应用程序,每个片段都包含一个列表。 我想为每个列表启用上下文菜单,但每当我尝试我得到一个意外的程序停止和强制closures。 以下是相关的代码和XML的作品,并给我我想要的三个片段与列表中的每个,在我尝试添加上下文菜单之前: main.xml中 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="3dp"> <fragment class="cdc.ListFragment.Fragment1" android:id="@+id/fragment1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment class="cdc.ListFragment.Fragment2" android:id="@+id/fragment2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment class="cdc.ListFragment.Fragment3" android:id="@+id/fragment3" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> fragment1.xml(另外两个是相似的) <TextView android:id="@+id/txtHeader1" android:layout_width="fill_parent" android:layout_height="30dp" android:layout_gravity="center" android:gravity="center" android:text="@string/machines_header" android:textColor="#00ccff" android:background="#ff23cf" android:textSize="25dp" /> <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:drawSelectorOnTop="false" android:textSize="12dp" /> […]

如何通过主要活动以编程方式更新ViewPager中的片段

我正在构build一个使用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 […]