Questions tagged «android-fragments»

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

9
(不建议使用)片段onOptionsItemSelected没有被调用
编辑: 这个问题是针对过时的夏洛克动作栏。现在应改为使用Android支持库 我添加了一个名为“分享给我”的操作栏菜单选项,fragment该选项出现了,但未捕获选择事件 我正在这样添加 @Override public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) { MenuItem item = menu.add(0, 7,0, R.string.share); item.setIcon(R.drawable.social_share).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } 尝试同时以fragment或fragment activity类似方式捕获它 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 7: Intent share = new Intent(Intent.ACTION_SEND); share.setType("text/plain"); share.putExtra(Intent.EXTRA_TEXT, "I'm being sent!!"); startActivity(Intent.createChooser(share, "Share Text")); return true; default: …

12
片段中的MapView(蜂窝)
现在,最终的SDK已与Google API结合使用-用MapView创建Fragment的最佳方法是什么?MapView需要MapActivity才能正常工作。 让Activity管理Fragments继承自MapActivity(糟糕的解决方案,因为它违背了Fragments自包含的想法),并且无法使用基于XML的常规布局。我在MapActivity.setupMapView()中得到了NullPointerException: E / AndroidRuntime(597):由以下原因引起:java.lang.NullPointerException E / AndroidRuntime(597):位于com.google.android.maps.MapActivity.setupMapView(MapActivity.java:400) E / AndroidRuntime(597):位于com.google.android.maps.MapView。(MapView.java:289) E / AndroidRuntime(597):位于com.google.android.maps.MapView。(MapView.java:264) E / AndroidRuntime(597):位于com.google.android.maps.MapView。(MapView.java:247) 我的第二个想法是以编程方式创建MapView,并将关联的活动(通过getActivity())作为上下文传递给MapView构造函数。不起作用: E / AndroidRuntime(834):原因:java.lang.IllegalArgumentException:只能在MapActivity实例内部创建MapView。 E / AndroidRuntime(834):位于com.google.android.maps.MapView。(MapView.java:291) E / AndroidRuntime(834):位于com.google.android.maps.MapView。(MapView.java:235) E / AndroidRuntime(834):位于de.foo.FinderMapFragment.onCreateView(FinderMapFragment.java:225) E / AndroidRuntime(834):位于android.app.FragmentManagerImpl.moveToState(FragmentManager.java:708) E / AndroidRuntime(834):位于android.app.FragmentManagerImpl.moveToState(FragmentManager.java:900) E / AndroidRuntime(834):位于android.app.FragmentManagerImpl.addFragment(FragmentManager.java:978) E / AndroidRuntime(834):位于android.app.Activity.onCreateView(Activity.java:4090) E / AndroidRuntime(834):位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664) 确实应该有像MapFragment这样的东西来处理MapView我需要的后台线程...那么,目前这样做的最佳实践是什么? 感谢德国瓦伦丁先生

3
Android兼容软件包不包含Activity.getFragmentManager()
我开始尝试使用3月3日发布的Android兼容性软件包将片段添加到基于2.1的Android应用中。我将库包含到我的项目中,并开始将代码从基于活动的类迁移到基于片段的类中,但是我注意到Google的Fragment示例似乎依赖于3.0中的Activity类(Honeycomb)具有新方法getFragmentManager()。它似乎是Fragment系统不可或缺的一部分。 我试图在兼容性包库中查找某些包含getFragmentManager()的Activity实施,但找不到。有谁知道我在哪里可以找到getFragmentManager(),以便为蜂窝兼容性添加Fragments,或者如果不知道,我如何不使用FragmentManager就能包含Fragments?

10
片段-指定的子代已经有一个父代。您必须先在孩子的父母上调用removeView()
我收到此错误。我尝试了许多解决方案,但我无法解决。帮我!我需要使用片段将表面视图和按钮添加到活动中。 CamActivity.java: public class CamActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cam); FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if(fragment == null) { fragment = new CamFragment(); fm.beginTransaction() .add(R.id.fragmentContainer, fragment) .commit(); } } } CamFragment.java: public class CamFragment extends Fragment { private static final String …

5
活动和片段之间有什么区别?
根据我的研究,backstack的概念及其存在方式存在显着差异: 活动 将activity放到的位置backstack后activities,用户只需按一下back 按钮即可导航回到上一个活动。 Activity 可以独立存在。 分段 将anfragment放置到活动中后,我们必须通过addToBackstack()在期间调用来请求保存实例fragment transaction。 Fragment 必须住在里面 activity 还有其他区别吗?

11
IllegalStateException:该片段已添加到tabhost片段中
FATAL EXCEPTION: main Process: com.example.loan, PID: 24169 java.lang.IllegalStateException: Fragment already added: FormFragment{428f10c8 #1 id=0x7f050055 form} at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1192) at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722) at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1533) at android.support.v4.app.FragmentManagerImpl$2.run(FragmentManager.java:489) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5068) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) at dalvik.system.NativeStart.main(Native Method) 因此,我有一个使用tabhost构建的android应用。总共有三个选项卡,在tab2中,有一个用于在tab2中进行片段事务的按钮(正在片段活动中调用该函数) FragmentTransaction t …

10
无法从活动中调用getSupportFragmentManager()
我有一个有片段的活动。 XML: <fragment android:name="com.example.androidcalculator.ResultFragment" android:id="@+id/result_fragment" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content" /> 而且我想从Activity中的方法中调用ResultFragment中的方法,但是getSupportFragmentManager“不存在”: FragmentManager fragMan = getSupportFragmentManager(); 我该如何解决?

16
在Android中,如何在类文件中以编程方式设置导航抽屉标题图像和名称?
在Android Studio 1.4.1中,我创建了一个默认的新导航抽屉项目。我的问题是在这个项目中有nav_header_main.xml文件,用于导航标题图像和名称。我希望在主班活动中以编程方式设置此图像和名称。如何执行此操作,我尝试了很多,但是应用程序崩溃了。 nav_header_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:id="@+id/headerView" android:layout_height="@dimen/nav_header_height" android:background="@drawable/side_nav_bar" android:gravity="bottom" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="@dimen/nav_header_vertical_spacing" android:src="@android:drawable/sym_def_app_icon" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="@dimen/nav_header_vertical_spacing" android:text="Android Studio" android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="android.studio@android.com" /> </LinearLayout> activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" …

13
如何在片段之间传递数据
我试图在程序的两个片段之间传递数据。它只是存储在列表中的简单字符串。该列表在片段A中公开,当用户单击列表项时,我需要它显示在片段B中。内容提供者似乎仅支持ID,因此将无法使用。有什么建议么?

15
空对象引用上的android.content.Context.getPackageName()'
嗨,我正在使用Fragments实现一个接口。 public class SigninFragment extends Fragment implements SigninInterface 片段类中接口的方法实现如下。 @Override public void afterSubmitClicked(String userId, Bundle bundle) { Log.d(TAG,"Calling time afterSubmitClicked called"+bundle); if(!userId.equals("-1")){ //Logged in successfully //Move to MusicHome Intent mIntent = new Intent(getActivity(),MusicHome.class); mIntent.putExtra("SigninFragment.user_details", bundle); startActivity(mIntent); }else{ //Logging in failed //show error dialog } } 在提取一个AsynchronousTask(扩展了AsyncTask)类之后,将调用此方法。 但是我崩溃了。错误消息显示 java.lang.NullPointerException: Attempt to …

3
getSupportFragmentManager()和getChildFragmentManager()有什么区别?
我的课继承了Fragment,这就是为什么它不能使用getSupportFragmentManager()的原因。我正在使用getChildFragmentManager,它向我显示错误-IllegalArguementException:未找到ID的视图...错误。 任何指导将不胜感激。 调用AttachmentsListFragment的代码是 Bundle b = new Bundle(); b.putSerializable("AttachmentsList", msg.attachments); AttachmentListFragment listfrag = new AttachmentListFragment(msg.attachments); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.add(R.id.attachmentslistcontainer, listfrag); transaction.addToBackStack(null); transaction.commit(); attachmentslayout.xml是 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/attachmentslistcontainer" android:orientation="vertical" > <TextView android:id="@+id/textViewAttachmentHeader" style="@style/Normal.Header.Toolbar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/list_separator_background" android:ellipsize="end" android:gravity="center" android:maxLines="2" android:text="@string/attachments_header" android:textColor="#FFFFFFFF" android:textSize="22sp" android:textStyle="bold" android:visibility="visible" /> <ListView …

10
如何从另一个片段中打开一个新片段?
我试图在片段之间进行导航。我已经有了NewFragment.java新片段的工作。我的问题是: 如何使它正确onClickListener运行NewFragment.java? button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(getActivity(), NewFragment.class); startActivity(i); } }); 仅供参考:这是从一个片段内部(我不知道这是否重要)。

7
在新的嵌套片段API中未调用onActivityResult()
我一直在使用Android支持库中包含的新的嵌套片段API。 嵌套片段所面临的问题是,如果调用了一个嵌套片段(即,已通过的FragmentManagerreturn由添加到另一个片段的片段getChildFragmentManager())startActivityForResult(),onActivityResult()则不会调用该嵌套片段的方法。但是,父片段onActivityResult()和活动onActivityResult()都被调用。 我不知道是否缺少有关嵌套片段的信息,但是我没有想到所描述的行为。下面是重现此问题的代码。如果有人能指出正确的方向并向我解释我做错了什么,我将不胜感激: package com.example.nestedfragmentactivityresult; import android.media.RingtoneManager; import android.os.Bundle; import android.content.Intent; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; public class MainActivity extends FragmentActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, new ContainerFragment()) .commit(); } public void onActivityResult(int requestCode, int resultCode, …

7
FragmentManager已经在执行事务。提交后何时安全初始化寻呼机?
我有一个托管两个片段的活动。该活动首先显示在加载对象时的加载器。然后,通过newInstance方法将加载的对象作为参数传递给两个片段,并附加这些片段。 final FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); trans.replace(R.id.container1, Fragment1.newInstance(loadedObject)); trans.replace(R.id.container2, Fragment2.newInstance(loadedObject)); trans.commit(); 第二个片段包含android.support.v4.view.ViewPager和标签。onResume我们将其初始化如下 viewPager.setAdapter(adapter); viewPager.setOffscreenPageLimit(adapter.getCount()); //the count is always < 4 tabLayout.setupWithViewPager(viewPager); 问题是android然后抛出 java.lang.IllegalStateException:FragmentManager已经在执行事务 使用此堆栈跟踪:(为简洁起见,我android.support从软件包名称中取出) v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)的v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637)的v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1620)在v4.view.ViewPager .populate(ViewPager.java:1235)at v4.view.ViewPager.populate(ViewPager.java:1083)at v4.view.ViewPager.setOffscreenPageLimit(ViewPager.java:847) 数据显示是否setOffscreenPageLimit(...);已删除。还有另一种方法可以避免此问题? 在生命周期中何时完成碎片交易,以便我可以等待设置寻呼机?

15
Android ViewPager获取当前视图
我有一个ViewPager,我想获取当前选定的可见视图,而不是位置。 getChildAt(getCurrentItem) 返回错误 View 这并非始终有效。有时返回null,有时仅返回错误的View。 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser == true) { mFocusedListView = ListView; } } PageListener上ViewPager用getChildAt()也没有工作,每次都没有给我正确的观点。 如何获得当前的可见视图? View view = MyActivity.mViewPager.getChildAt(MyActivity.mViewPager.getCurrentItem()).getRootView(); ListView listview = (ListView) view.findViewById(R.id.ListViewItems);

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.