Articles of android fragments

在FragmentTransaction.replace()后跟后退按钮后,不会重新创建ViewPager片段

我正在尝试实现保存和恢复状态,但是在使用PreferenceFragment替换主Fragment然后按下后退按钮时遇到问题。 我的主要Fragment包含一个带有FragmentPagerAdapter的ViewPager ,其中有3个Fragments可以ViewPager 。 在点击后退按钮后,没有调用我的3 Fragment的Fragment.onCreateView()回调。 我已经尝试了所有我在这里遇到的解决方案,但是我无法解决这个问题。 另一个可能需要注意的重要事项是,我的3个ViewPager Fragment的数据存储在单独的类中,这些类是实例化的,可通过Activity访问。 3 Fragment都包含RecyclerView用于列出大量数据。 这样做是为了清洁,但也是为了使这些数据在Activity持续存在。 这可能不是问题,因为它在启动应用程序时工作正常,但也因为主要问题是我的Fragments没有重新创建。 意外行为: 在应用程序创建时,一切正常,但是当我用另一个替换我的主Fragment (包含带有FragmentPagerAdapter的ViewPager )然后按下后退按钮时,不会重新创建ViewPager中的Fragment 。 我的主要Fragment的onCreateView() 被调用。 问题: 我错过了什么? 是否还应该创建一些其他回调? 我应该在哪里以及如何重新创建Fragments ? 我试过了什么: 更改了正在使用的FragmentAdapter ,但我应该使用getSupportFragmentManager()就像这里的解决方案一样。 编辑:使用错误的FragmentManager实际上是我的麻烦的来源。 请参阅下面的答案。 将@Override public int getItemPosition(Object object) {return POSITION_NONE;}到FragmentPagerAdapter ,如此处所示 。 根据我的理解,从FragmentPagerAdapter更改为FragmentPagerAdapter ,这在这里无关紧要。 FragmentStatePagerAdapter的内部实际上保留了Fragments ,但它们不会重新渲染。 在调用onCreateView()时,使用FragmentTransaction添加主Fragment并在该Fragment的其他几个回调中,请参阅下面的MMMainFragment 。 各种其他的东西。 我的MainFragment类具有相应的XML布局 public class MMMainFragment extends Fragment { private MMViewPager […]

DialogFragment中的ViewPager – IllegalStateException:Fragment没有视图

我想要实现的目标 从FragmentActivity单击操作栏中的操作按钮时会显示一个对话框 DialogFragment – 没有标题的对话框 TabHost – 对话框顶部的选项卡 ViewPager with FragmentPagerAdapter – Swipable,其内容连接到Tabs 2-3对话框按钮(对话框的不同子类,不同的按钮) – 不应该在ViewPager的一个Fragment ,这意味着无论ViewPager显示什么Fragment ,相同的按钮都应保留在对话框的底部。 问题 IllegalStateException: Fragment does not have a view 到目前为止我尝试/做过的事情 使用android.support.v4包进行必要的类 调用getChildFragmentManager()而不是getSupportedFragmentManager() 通过此链接实施了#10建议的posthttps://code.google.com/p/android/issues/detail?id=42601 。 我将代码直接复制/粘贴到我想要显示的两个Fragment类中,以及DialogFragment类。 在我的自定义DialogFragment我首先尝试覆盖onCreateView ,然后是onCreateDialog ,然后同时覆盖两者。 所有这些我都要跑,但意外的结果。 只有onCreateView :无法访问AlertDialog.Builder来创建所需的按钮,除了Dialog的结果很棒。 仅onCreateDialog :上面显示的错误消息。 我仍然认为这种方法与我想要达到的目标一样接近。 onCreateView和onCreateDialog :在onCreateView膨胀对话框布局,并将对话框按钮添加到onCreateDialog的AlertDialog.Builder 。 这显示了对话框,但AlertDialog.Builder中添加的按钮不可见。 此外,单击EditText字段时键盘未显示。 源代码 大多数来自Tutorial在Android 2.2 + ViewPager和Fragments中实现TabHost的使用 。 ActivityFragment的代码改为DialogFragment 。 但是我从这个答案https://stackoverflow.com/a/18167273/2375978的源代码中用一个修改过的ViewPager替换了它的ViewPager。 […]

无法转换为颜色:在片段中展开布局时types= 0x2错误但仅在三星Galaxy和注释4

我正在开发一个带有活动的简单应用程序,我使用碎片。一些屏幕上有一些元素。 当我编译并运行应用程序时,它工作正常,除了在三星Galaxy s3和注释4.我没有从堆栈跟踪得到它有什么不对。 01-16 16:25:05.915: E/AndroidRuntime(23174): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.MainActivity}: android.view.InflateException: Binary XML file line #37: Error inflating class com.android.internal.widget.ActionBarView 01-16 16:25:05.915: E/AndroidRuntime(23174): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292) 01-16 16:25:05.915: E/AndroidRuntime(23174): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2350) 01-16 16:25:05.915: E/AndroidRuntime(23174): at android.app.ActivityThread.access$800(ActivityThread.java:163) 01-16 16:25:05.915: E/AndroidRuntime(23174): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1257) 01-16 16:25:05.915: E/AndroidRuntime(23174): at android.os.Handler.dispatchMessage(Handler.java:102) 01-16 16:25:05.915: E/AndroidRuntime(23174): at android.os.Looper.loop(Looper.java:157) 01-16 16:25:05.915: E/AndroidRuntime(23174): […]

在片段android中创建listview

作为标题,我想在Fragment中创建一个带有自定义行的列表视图。 我的代码如下。 片段类 public class PhotosFragment extends Fragment{ public PhotosFragment(){} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_photos, container, false); ArrayList listContact = GetlistContact(); ListView lv = (ListView)getActivity().findViewById(R.id.lv_contact); lv.setAdapter(new ListviewContactAdapter(getActivity(), listContact)); return rootView; } private ArrayList GetlistContact(){ ArrayList contactlist = new ArrayList(); ListviewContactItem contact = new ListviewContactItem(); contact.SetName(“Topher”); contact.SetPhone(“01213113568”); […]

Android IllegalStateException:片段未附加到活动webview

所以我是Android应用程序写作的新手,我正在尝试一个练习应用程序,我希望以后可以变成一些东西。 在我决定尝试将webview添加到其中一个之前,我在操作栏中有3个选项卡运行正常。 现在它崩溃了IllegalStateException。 由于我现在对android不太了解,我似乎无法弄清楚出了什么问题。 主要活动: private ViewPager viewPager; private TabsPagerAdapter mAdapter; private ActionBar actionBar; private String[] tabs = { “Web”, “Facebook”, “Twitter” }; @SuppressLint(“NewApi”) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialization viewPager = (ViewPager) findViewById(R.id.pager); actionBar = getActionBar(); mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(mAdapter); actionBar.setHomeButtonEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Adding Tabs for (String tab_name : […]

在自定义通知中添加按钮操作

我已经制作了custom notification并且有一个按钮,我想functionalities on notification and button click执行两个不同的functionalities on notification and button click 。 我看了很多链接但找不到添加按钮监听器的方法。 谁能帮忙。 这是我的代码。 非常感谢。 private void startNotification() { Intent intent; PendingIntent pIntent; RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.mynotification); Context context = getApplicationContext(); NotificationCompat.Builder builder = new NotificationCompat.Builder( this).setSmallIcon(R.drawable.ic_launcher).setContent( remoteViews); if (hasFlash) { intent = new Intent(context, FlashLight.class); pIntent = PendingIntent.getActivity(context, 1, intent, […]

屏幕旋转后不会调用onSaveInstanceState

我知道有很多关于在NavInstanceState上的问题,但是我无法find问题的答案。 我有一个扩展AppCompatActivity的活动; 此活动使用3个片段,它有一个variables’int currentStep’来跟踪正在显示的片段。 在onSavedInstanceState方法中,我将currentStepvariables存储在bundle中,然后在onCreate方法中将其恢复。 public class MainActivity extends AppCompatActivity { private final String CURRENT_STEP_TAG = “current_step”; private int currentStep; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pedido); if(savedInstanceState == null) { loadFirstFragment(); } else { currentStep = savedInstanceState.getInt(CURRENT_STEP_TAG); if(currentStep == 2){ //Do some stuff… } } } @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) […]

如何使用ViewPager和嵌套片段正确处理屏幕旋转?

我有这个活动,它有一个片段。 这个片段布局包含一个带有几个片段的视图寻呼机(实际上是两个片段)。 创建视图寻呼机时,会创建其适配器, 调用getItem并创建子片段。 大。 现在,当我旋转屏幕时,框架处理片段重新创建,适配器在我的onCreate从主片段再次创建,但getItem永远不会被调用 ,所以我的适配器保存错误的引用(实际上为空)而不是两个片段。 我发现片段管理器(即子片段管理器)包含一个名为mActive的片段数组,当然无法从代码中访问它。 但是有这个getFragment方法: @Override public Fragment getFragment(Bundle bundle, String key) { int index = bundle.getInt(key, -1); if (index == -1) { return null; } if (index >= mActive.size()) { throwException(new IllegalStateException(“Fragement no longer exists for key ” + key + “: index ” + index)); } Fragment f = […]

动态地在单个活动中实现多个片段

我正在研究碎片 用例我试图实现 :: 我正在使用动态片段 我在一个活动中使用三个片段 我的目标是在所有三个片段之间进行通信 我正在使用片段支持包 每个片段都有一个小部件 my_fragment1有edittext my_fragment2有button my_fragment3有TextView 单击button , edittext的文本必须显示在textview 到目前为止我尝试过的是我构建了下面的大部分场景 Top_Fragment.java public class Top_Fragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.my_fragment1, container, false); return view; } } Middle_Fragment.java package com.example.deleteme; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; […]

不使用NDK的genymotion模拟器上的致命信号11(SIGSEGV)代码= 2

我的应用程序不使用NDK。 我在GenyMotion Nexus 7仿真器上测试它并且问题很难再现,我仍然没有想出一个正确的方法来重现它。 有时候应用程序可以正常运行很长时间,有时它会崩溃并在使用大约30秒后自动重启。 编辑:我不是100%,但它只发生在genymotion模拟器,但不是常规的Android模拟器(我会继续测试)。 当我在横向模式下添加对大屏幕的支持时开始出现问题(开始在横向中同时显示两个片段,只有1个在纵向中(宽度小于720))。 其中一个片段延迟加载图像(来自内存,磁盘或互联网)。 我对这种动态添加和删除片段很新,所以我确信那里可能会有一些东西。 无论如何请帮我解码这个转储并找出导致崩溃的原因(我会尝试省略我认为不重要的东西): 12-17 16:52:18.344 1255-1255/? A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x97858094 (code=2), thread 1255 (hiexpressgradle) 12-17 16:52:18.448 121-121/? I/DEBUG﹕ *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 12-17 16:52:18.448 121-121/? I/DEBUG﹕ Build fingerprint: ‘generic/vbox86tp/vbox86tp:4.3/JLS36G/eng.buildbot.20131127.101043:userdebug/test-keys’ 12-17 16:52:18.448 121-121/? I/DEBUG﹕ […]