Questions tagged «android-fragments»

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


13
从DialogFragment回调到片段
问题:如何创建从DialogFragment到另一个Fragment的回调。就我而言,所涉及的活动应该完全不知道DialogFragment。 认为我有 public class MyFragment extends Fragment implements OnClickListener 然后在某个时候我可以做 DialogFragment dialogFrag = MyDialogFragment.newInstance(this); dialogFrag.show(getFragmentManager, null); MyDialogFragment的样子 protected OnClickListener listener; public static DialogFragment newInstance(OnClickListener listener) { DialogFragment fragment = new DialogFragment(); fragment.listener = listener; return fragment; } 但是,如果DialogFragment暂停并在其生命周期中恢复,则无法保证侦听器会存在。Fragment中唯一的保证是通过setArguments和getArguments通过Bundle传递的保证。 有一种方法可以引用活动(如果它应该是侦听器): public Dialog onCreateDialog(Bundle bundle) { OnClickListener listener = (OnClickListener) getActivity(); .... …

12
使用Fragments为Android中的每个选项卡分离后退堆栈
我正在尝试在Android应用中实现导航标签。由于不推荐使用TabActivity和ActivityGroup,因此我想使用Fragments来实现它。 我知道如何为每个选项卡设置一个片段,然后在单击选项卡时切换片段。但是,如何为每个标签设置单独的后置堆栈? 例如,片段A和B将位于选项卡1下,片段C和D将位于选项卡2下。启动应用程序后,将显示片段A并选择选项卡1。然后,可以将片段A替换为片段B。选择选项卡2后,应显示片段C。如果选择了选项卡1,则应该再次显示片段B。此时,应该可以使用后退按钮显示片段A。 同样,在旋转设备时保持每个标签的状态也很重要。 马丁

8
一个活动和所有其他片段
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 我想实现一个屏幕,Activity和所有其他sreens与Fragments和managing all the fragments thru the activity。 这是个好主意吗?我的回答是“ 否”,但我仍然想更清楚地了解这种想法。 这个想法有什么优点和缺点? 注意: 请不要给我有关片段和活动的链接。 编辑: 以下是有关片段和活动的一些信息: 优点: 片段应与活动一起用作子活动。 碎片不是活动的替代品。 片段旨在实现可重用性(需要知道以何种方式可以实现可重用性。)。 片段是编写支持平板电脑和手机的代码的最佳方法。 缺点: 我们需要实现接口以从片段中获取数据。 对于对话,我们必须走很长的路才能显示出来。 如果不考虑使用平板电脑,为什么还要使用碎片?活动和片段之间的开始时间差是多少?

18
如何在片段中访问getSupportFragmentManager()?
我有一个FragmentActivity,我想在其中使用一个地图片段。我在获取支持片段管理器进行访问时遇到问题。 if (googleMap == null) { googleMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map1)).getMap(); // check if map is created successfully or not if (googleMap == null) { Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT) .show(); } } // create marker MarkerOptions marker = new MarkerOptions().position( new LatLng(latitude, longitude)).title("Hello Maps "); CameraPosition cameraPosition …

4
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int android.view.View.getImportantForAccessibility()'
我正在尝试根据输入字段ArrayList和来组合购物清单应用ListView。该应用程序将基于Fragments。但是,我遇到了一个问题,我不知道如何解决。 我环顾了Google和StackOverflow,发现了一些信息。但是,我还没有开始工作。现在,我希望我的代码可以获得帮助。 我在Android开发方面经验不足。 Main.java import java.util.ArrayList; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.view.MenuItem; public class Main extends FragmentActivity { ArrayList<Detail> items = new ArrayList<Detail>(); FragmentManager FM; FragmentTransaction FT; Input input = new Input(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); replaceFragment(R.id.container, input); …

12
如何实现OnFragmentInteractionListener
我在Android Studio 0.8.2中使用向导生成了带有导航抽屉的应用程序 我创建了一个片段,并将其添加到newInstance()中,并出现以下错误: com.domain.myapp E / AndroidRuntime:致命例外:main java.lang.ClassCastException:com.domain.myapp.MainActivity@422fb8f0必须实现OnFragmentInteractionListener 我找不到任何地方如何实现此OnFragmentInteractionListener?即使在android sdk文档中也找不到它! MainActivity.java import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.app.FragmentManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.support.v4.widget.DrawerLayout; public class MainActivity extends Activity implements NavigationDrawerFragment.NavigationDrawerCallbacks { /** * Fragment managing the behaviors, interactions and …

6
如果存在,如何从BackStack恢复Fragment
我正在学习如何使用片段。我有三个实例Fragment在类的顶部被初始化。我将片段添加到这样的活动中: 声明和初始化: Fragment A = new AFragment(); Fragment B = new BFragment(); Fragment C = new CFragment(); 替换/添加: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, A); ft.addToBackStack(null); ft.commit(); 这些摘要运行正常。每个片段都附加到该活动,并毫无问题地保存到后台堆栈。 因此,当我启动A,,C然后启动时,B堆栈如下所示: | | |B| |C| |A| ___ 当我按下“后退”按钮时,它B被破坏并C恢复。 但是,当我A第二次启动fragment 时,它不是从back stack恢复,而是添加到back stack的顶部 | | |A| |C| |A| ___ 但是我想恢复A并销毁所有碎片(如果有的话)。实际上,我只是喜欢默认的反向堆栈行为。 我该如何完成? 预期:(A应该恢复,并且应该破坏顶部片段) | | …

6
Android:在Activity生命周期中何时调用onCreateOptionsMenu?
我在其中加入了两个断点onCreate(在方法的开始处有一个断点,在方法的末尾有一个断点),在的开始处也有一个断点onCreateOptionsMenu。该onCreate方法首先被调用,然后在完成之前onCreateOptionsMenu被调用。 我试图Fragment在应用程序中分离导航代码,所以我有几个对象要委托onCreateOptionsMenu给我,具体取决于应用程序是否在手机/平板电脑上运行(我正在使用屏幕尺寸来确定此布局,我的布局文件用于大屏幕有一个视图,在布局放大后我会检查该视图)。我遇到的问题是,我在onCreate中创建了这些对象,当我在中引用对象时遇到了空指针异常onCreateOptionsMenu。

11
java.lang.IllegalStateException:片段未附加到活动
进行API调用时很少遇到此错误。 java.lang.IllegalStateException: Fragment not attached to Activity 我尝试将代码放入isAdded()方法中,以检查当前是否将片段添加到其活动中,但是我仍然很少收到此错误。我不明白为什么我仍然会收到此错误。我该如何预防呢? 它在网上显示错误- cameraInfo.setId(getResources().getString(R.string.camera_id)); 以下是我正在制作的示例api调用。 SAPI.getInfo(getActivity(), new APIResponseListener() { @Override public void onResponse(Object response) { cameraInfo = new SInfo(); if(isAdded()) { cameraInfo.setId(getResources().getString(R.string.camera_id)); cameraInfo.setName(getResources().getString(R.string.camera_name)); cameraInfo.setColor(getResources().getString(R.string.camera_color)); cameraInfo.setEnabled(true); } } @Override public void onError(VolleyError error) { mProgressDialog.setVisibility(View.GONE); if (error instanceof NoConnectionError) { String errormsg = getResources().getString(R.string.no_internet_error_msg); Toast.makeText(getActivity(), …

6
片段中的片段
我想知道这是否真的是Android API中的错误: 我有这样的设置: ┌----┬---------┐ | | | | 1 | 2 | | |┌-------┐| | || || | || 3 || └----┴┴-------┴┘ 是在右窗格中加载片段2(搜索屏幕)的菜单。 是一个搜索屏幕,其中包含片段#3,这是结果列表。 结果列表已在多个地方使用(本身就是一个功能完善的高级片段)。 此功能在手机上(在1&2和3是ActivityFragments的情况下)效果很好。 但是,当我使用此代码时: FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); Fragment frag = new FragmentNumber2(); if(toLoad != null) frag.setArguments(toLoad); transaction.replace(R.id.rightPane, frag); transaction.commit(); 其中R.id.leftPane和R.id.rightPane是<fragment>水平线性布局中的。 据我了解,以上代码删除了驻留的片段,然后将其替换为新的片段。太棒了……显然,这不会发生,因为当此代码第二次运行时,您会收到以下异常: 07-27 15:22:55.940: ERROR/AndroidRuntime(8105): Caused by: …

10
作为ViewPager的一部分更新ListFragment中的数据
我在Android中使用v4兼容性ViewPager。我的FragmentActivity有很多数据,这些数据将以不同的方式显示在ViewPager的不同页面上。到目前为止,我只有3个相同ListFragment的实例,但是将来我将拥有3个不同ListFragments的实例。ViewPager在垂直手机屏幕上,列表不是并排的。 现在,ListFragment上的按钮将启动一个单独的全页活动(通过FragmentActivity),该活动将返回并FragmentActivity修改数据,保存数据,然后尝试更新其ViewPager中的所有视图。在这里,我被困住了。 public class ProgressMainActivity extends FragmentActivity { MyAdapter mAdapter; ViewPager mPager; @Override public void onCreate(Bundle savedInstanceState) { ... mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.viewpager); mPager.setAdapter(mAdapter); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { ... updateFragments(); ... } public void updateFragments() { //Attempt 1: //mAdapter.notifyDataSetChanged(); …



13
片段内部片段
我需要有关片段内部片段的帮助,实际上我在按“后退”按钮时遇到问题。应用程序主屏幕上有按钮,并在每个按钮视图上按,然后用新片段替换(该片段包含在另一个片段内),通过按button1替换片段,动态添加/替换片段的工作正常,但按按钮时也会发生同样的情况,但是如果按该按钮再次出现异常: "Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with another fragment for com........ fragmentname" 表示已经添加了片段或内部片段,而我正尝试再次添加它们,任何人都知道如何使用片段内部的片段并可以毫无问题地来回移动,谢谢您的支持。 MainActivity,动态添加和替换片段。 public class FragmentInsideFragmentTestActivity extends Activity { private Button button1; private Button button2; private Button button3; private Button button4; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) …

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.