Tag: android fragments

为什么片段退出动画不起作用?

我从底部到顶部添加带有动画的片段,然后当按下回调或调用popBackStack()时,它应该从上到下。 val confirmFragment = ConfirmFragment.Companion.newInstance(item) val transaction = MainActivity.getMainActivity(context)!!.supportFragmentManager.beginTransaction() transaction.addToBackStack(tag) transaction.setCustomAnimations(R.anim.slide_in_bottom, R.anim.slide_out_top) transaction.replace(R.id.over_view, confirmFragment, tag) transaction.commit() ExitAnimation(xml) <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="700" android:fromYDelta="100%" android:toYDelta="0%" > </translate> </set> EnterAnimation(xml) <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1700" android:fromYDelta="0%" android:toYDelta="100%" > </translate> </set> 输入动画工作,但是当片段存在,它不起作用

为什么隐藏一个Fragment导致一个空指针异常?

更新1: 我看到这个答案解决了这个问题,但是我不明白为什么,并且觉得这个家伙 。 这两个都返回一个非null的InfoboxFragments,但事务失败,第一个 。 childFragmentManager.findFragmentById(R.id.infobox_fragment) childFragmentManager.findFragmentByTag("plz") 打扰一下?! 更新2: childFragmentManager不能和xml中的嵌套片段一起玩。 我一直在试图把片段隐藏在另一个片段里面。 我已经尝试了一些方法,并且将子碎片高度降低到1dp似乎是最可靠的, 但是会留下一些可见的碎片 。 所以,我尝试了使用childFragmentManager和事务的推荐方法来隐藏下面的片段。 Android文档中提到了hide(fragment)方法: 隐藏现有的片段。 这只对视图添加到容器的片段有用,因为这会导致视图被隐藏 所以,我在LinearLayout包含了这个片段。 showInfoBox()工作正常,但hideInfoBox()与NPE崩溃: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.startViewTransition(android.view.View)' on a null object reference at android.support.v4.app.FragmentManagerImpl.completeShowHideFragment(FragmentManager.java:1681) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1778) 唯一的区别似乎是hide和show交易。 private fun showInfoBox() { val infoboxFragment = childFragmentManager.findFragmentById(R.id.infobox_fragment) as InfoboxFragment childFragmentManager.beginTransaction() .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out) .show(infoboxFragment) .commit() TransitionManager.beginDelayedTransition(constraintLayout) applyConstraintSet.applyTo(constraintLayout) […]

反应改造呼叫

我有一个应用程序,有一个viewpager与4个片段。 我想用我的服务器中的数据填充所有的片段。 我加载活动中的数据,我想分发给所有的片段。 所以我有这个签名: @GET("trashCan") fun getTrashCans() : Observable<List<TrashCanDto>> 我调用方法并填充List。 ServiceGenerator.createService(ApiClient::class.java) .getTrashCans() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Subscriber<List<TrashCan>>(){ override fun onCompleted() { showProgress(false) } override fun onError(e: Throwable) { showProgress(false) Toast.makeText(this@TrashCansInfoActivity, "Erro ao carregar informações", Toast.LENGTH_SHORT).show() e.printStackTrace() } override fun onNext(trashCanList: List<TrashCan>) { mTrashCanList = trashCanList } }) 然后我有一个方法从这个列表中获得Observable: override fun getObservable(): Observable<TrashCan> { return BehaviorSubject.from(mTrashCanList) […]

片段过渡支持25.1.0与Recyclerview

我正在使用片段转换为回收站视图设置动画,使用25.0.1支持库和转换对于推送和弹出目标片段正常工作。 我用来生成交易的代码是: supportFragmentManager.beginTransaction() .replaceAddToBackStack(R.id.content, fragment) .addSharedElement(fragment, commonViews) .commit() 现在我试图更新到支持库的25.1.0版本,并且弹出式动画崩溃,因为转换没有找到原始视图,并且正在崩溃: E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at android.support.v4.app.FragmentTransitionCompat21.setNameOverridesOptimized(FragmentTransitionCompat21.java:339) at android.support.v4.app.FragmentTransition.configureTransitionsOptimized(FragmentTransition.java:232) at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:111) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2143) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:822) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:775) at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:178) at App.ui.base.BaseActivity.onBackPressed(BaseActivity.kt:23) … 但是,如果我禁用“优化”,它工作正常。 supportFragmentManager.beginTransaction() .replaceAddToBackStack(R.id.content, fragment) .addSharedElement(fragment, commonViews) .setAllowOptimization(false) .commit() 我做错了什么? 编辑:我用来包装共享元素的扩展: .replaceAddToBackStack fun<T : […]

保存和恢复嵌套片段中的状态

我阅读了许多已经处理过类似问题的帖子,但是还没有找到能完全回答我的问题的东西。 我有一个使用嵌套片段的Android应用程序(来自v4支持库)。 我有一个主要的片段活动,其中包含一个片段,该片段包含一个ViewPager,它使3个内部片段之间滑动。 我想能够保存3个内部嵌套片段的每一个的状态,为此,我重写了3个内部片段的每一个的onSaveInstanceState()方法,并试图恢复onActivityCreated()中的状态,就像这样: InternalFragment1.java: public class InternalFragment1 extends Fragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // Commands to attach to main UI components… if(savedInstanceState != null) { // Commands to restore the saved state… } } @Override public void onSaveInstanceState(Bundle outState) { // Commands to save the state into outState… super.onSaveInstanceState(outState); } […]

如何在WebView里添加“返回”功能在Fragment里面?

更新:解决! 问题与我的Viewpager而不是WebView有关。 我想添加一个“返回”功能,我的WebView里面的Fragment 。 但我不知道如何: public final class TestFragment extends Fragment { static WebView mWeb; private View mContentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mContentView = inflater.inflate(R.layout.webview, null); mWeb = (WebView)mContentView.findViewById(R.id.webview); WebSettings settings = mWeb.getSettings(); settings.setJavaScriptEnabled(true); settings.setSupportZoom(false); mWeb.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); mWeb.getSettings().setBuiltInZoomControls(false); mWeb.loadUrl("myurl…"); mWeb.setOnKeyListener(new OnKeyListener(){ public boolean onKey(View v, int keyCode, KeyEvent event) { […]

操作条向上导航与片段

我有一个带有三个选项卡的选项卡式的Actionbar / viewpager布局, 如A , B和C. 在选项卡C选项卡(片段),我添加另一个片段说片段D。 同 DFragment f= new DFragment(); ft.add(android.R.id.content, f, ""); ft.remove(CFragment.this); ft.addToBackStack(null); ft.commit(); 我修改DFragment的onResume中的操作栏添加按钮: ActionBar ab = getActivity().getActionBar(); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); ab.setDisplayHomeAsUpEnabled(true); ab.setDisplayShowHomeEnabled(true); 现在在DFragment中,当我按下硬件(手机)“后退”按钮时,我将选择CFragment返回到原始选项卡式(ABC)布局。 如何使用操作栏向上按钮来实现此功能?

将Fragment的溢出图标设置为默认值

在我的应用程序中,我有一个实现NavigationDrawer , Toolbar和两个片段的活动。 在第一个片段我设置自定义溢出图标,但在第二个片段,我想使用系统的默认溢出图标,我不想使用预先下载的绘制。 我应该在每个片段中创建单独的工具栏,并通过setSupportActionbar设置它们,还是有办法检索系统的溢出图标?

点击一个文本视图来改变片段

我正在尝试使用Kotlin构建我的第一个Android应用程序,但是我陷入了一个非常简单的情况。 我正在使用Kotlin android扩展,我得到一个空指针异常。 <TextView android:id="@+id/tvGoToRegisterFrag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn_sign_in" android:text="@string/haven_t_registered_yet" android:paddingTop="10dp" android:textColor="@color/colorAccent" android:layout_centerHorizontal="true"/> 用这个我用了 tvGoToRegisterFrag.setOnClickListener { goToRegister() } 我知道我可以使用 tvGoToRegisterFrag?.setOnClickListener { goToRegister() } 为了摆脱崩溃,但我仍然不知道为什么对象是空的,点击时不做任何事情。 所有这些都是在片段中完成的,如果这改变了任何东西。

Android – Tab#3正在清除Tab#1中的列表视图。

我有一个非常奇怪的问题,不会产生任何错误,所以它很难排除故障(至少对我来说)。 我的应用程序有3个标签。 标签1有一个片段内的列表视图,其他两个标签基本上是空的占位符片段。 当我点击选项卡1,然后选项卡2,然后返回到选项卡1,我的列表视图保持按预期。 但是,如果我点击标签3然后点击标签1,我的列表视图消失。 我看到表2和表3之间没有区别,这将导致这一点。 我已经从我的应用程序添加了相关的代码。 请让我知道是否需要更多。 任何帮助和建议将不胜感激! 我的主要活动: var mCursorAdapter: DbCursorAdapter? = null class CatalogActivity : AppCompatActivity(), LoaderManager.LoaderCallbacks<Cursor> { private lateinit var mFragmentPagerAdapter: FragmentPagerAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_catalog) setSupportActionBar(toolbar) // Create the adapter that will return a fragment for each of the three // primary sections of the activity. mFragmentPagerAdapter […]