Tag: android fragments

Kotlin显示片段中的types不匹配

里面有一个RecyclerAdapter的片段。 我想在onCreateView方法中初始化适配器,但是在这个语句中抛出了”Type mismatch. Required : Context , Found : FragmentActivity”的错误 我不知道为什么第一个显示这个错误,第二个没有包含编译时错误。 显示错误 recyclerView!!.adapter = RestaurantMenuAdapter(activity) 没有错误显示 recyclerView!!.layoutManager = LinearLayoutManager(activity) Fragment.kt override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment val view = inflater.inflate(R.layout.fragment_restaurant_menu, container, false) recyclerView = view.findViewById(R.id.restaurant_container) recyclerView!!.adapter = RestaurantMenuAdapter(activity) recyclerView!!.layoutManager = LinearLayoutManager(activity) RecyclerAdapter.kt class RestaurantMenuAdapter […]

使用Kotlin的片段和活动

我有以下两个整数的活动 class ComplexActivity : AppCompatActivity() { var clubs : Int = 0 var diamonds : Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_complex) val fragment = ClubsFragment() val transaction = supportFragmentManager.beginTransaction() transaction.replace(R.id.main_frame, fragment) transaction.commit() } } 当isScored为true时,我想从片段ClubsFragment中更改整数球杆的值 class ClubsFragment : Fragment(), SeekBar.OnSeekBarChangeListener{ private var isScored = false override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, […]

不能使用Kotlin扩展function添加片段

我有一个Kotlin扩展function来添加另一个Kotlin文件中的一个片段 fun Fragment.addFragment(tag: String?, id: Int, fragmentManager: FragmentManager) { // will take care of adding the fragment. val fragmentTransaction = fragmentManager.beginTransaction() fragmentTransaction.add(id, this, tag) fragmentTransaction.addToBackStack(tag) fragmentTransaction.commit() } 但是,每当我使用该扩展function添加一个片段,然后我得到这个崩溃 java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.support.v4.app.Fragment.setNextAnim(int)’ on a null object reference 我正在使用这样的扩展function: MyFragment().addFragment(“MyFragment”, R.id.frame, fragmentMaganer) 上述语句后,如果我试图调试我的代码,那么它的执行成功,直到 fragmentTransaction.commit() 但在此之后,在我的activity的onStart()方法,我面临着这个NullPointerException问题 但是,如果我直接在Activity中使用相同的代码: val myFragment = MyFragment() val fragmentTransaction […]

片段加载到家庭活动中时,“鬼”底部导航栏

我目前正在使用我的应用程序的主屏幕,当用户点击底部导航栏上的一个按钮时,我正在使用片段来加载不同的“页面”。 我发现,当我加载主屏幕时,底部栏似乎重新加载自己,创建两个栏,一个在页面中间,一个在屏幕底部的适当位置(而中间栏实际上不起作用)。 我认为在活动中的片段加载是原因,但我不完全确定如何解决它。 下面是一个问题的形象,以及我得到的一些代码。 activity_home.xml <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:design="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/home_screen" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <include layout="@layout/app_bar" android:layout_width="0dp" android:layout_height="0dp" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="225dp" /> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="#f1f1f1" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="25dp"> <View android:layout_width="match_parent" android:layout_height="2dp" android:background="@drawable/shadow" /> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="wrap_content" […]

返回到后面堆叠的片段

我有我用add()方法添加的片段A,B,C。 当我到达片段C时,有时候我想回到片段A并删除B和C. 我的方法是: val backStateName = FragmentA::class.java.name activity.fragmentManager.popBackStackImmediate(backStateName, FragmentManager.POP_BACK_STACK_INCLUSIVE) 我也有一个specialTag添加到我的片段A,所以我做了一个检查,以确保在我尝试我的方法之前,片段A仍然在后面堆栈。 val fragmentToGoTo = activity.fragmentManager.findFragmentByTag(specialTag) 它不会返回null – 这意味着片段仍然可用于后退堆栈。 popBackStackImmediate返回false。 为什么?

从活动调用视图寻呼机片段中的函数

我有一个活动,其中包含几个复选框和每30秒滑动一次查看传呼机。 当我选中父活动中的复选框时,我想更改图像。 但是,在片段调用函数“flipImage()”获取图像视图为空,也是当我点击图像的onClickListener不工作。 class SomeActivity : AppCompatActivity() { var viewPagerAdapter : SectionsPagerAdapter by Delegates.notNull<SectionsPagerAdapter>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_image_slides) supportActionBar?.setDisplayHomeAsUpEnabled(true) viewPagerAdapter = SectionsPagerAdapter(supportFragmentManager) vp_image_slides.adapter = viewPagerAdapter btnImageFlip.setOnCheckedChangeListener({ checkbox, b -> val slideImageFrag = viewPagerAdapter.getItem(vp_image_slides.currentItem) as SlideImageFragment slideImageFrag.flipImage() }) } inner class SectionsPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { override fun getItem(position: Int): Fragment { return […]

Android ViewPager – 如何强制删除所有项目?

我正在编写一个Android应用程序,它广泛使用包含高分辨率图像的ViewPagers。 我正在扩展PagerAdapter并在适当时手动创建和销毁项目。 它工作正常,直到这个片段被放置在该堆栈上。 我想将ViewPagers中的片段放在堆栈上的时候从内存中删除所有的图片,但是我找不到方法。 我尝试从适配器使用的列表中删除所有的支持数据,然后调用.notifyDataSetChanged(),但是这不经过,并为每个页面调用PagerAdapter.destroyItem(),我希望。 我也尝试使用FragmentStatePagerAdapter,但是这也似乎没有清除应用程序使用过程中的任何内存。 我怎样才能强制一个PagerAdapter在呼叫器的所有项目上调用destroyItem()? 这是我包含ViewPager的View的代码: class ContentStrip : LinearLayout { var title : WeakReference<TextView>? = null var titleString: String = "" lateinit var pager : WeakReference<MyViewPager> var data:ContentCollection? = null //[…] other view methods //Called from parent fragment's onDestroy fun clearMemory() { if (data == null) return var i = -1 var […]

如何防止在Java之前加载碎片的创建?

嘿,我试图做这个教程,现在我得到的问题,当我启动应用程序崩溃,因为我的片段的参数为空。 我发现一个答案,我必须从我的content_main.xml中删除片段,但是当我这样做的应用程序启动,但行为怪异,我不认为这是正确的答案的问题。 所以我的MainActivityFragment的onCreate()在java代码之前调用,所以我得到了这样的问题: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) page = this.arguments.getInt("someInt", 0) title = this.arguments.getString("someTitle") } 什么是正确的解决方案? 我的代码在github上

片段从第二个片段返回到第一个片段

我有viewpager选项卡片段,并从按钮上的一个tabb片段单击它打开另一个片段,另一个片段我想添加背压的事件,因为我做backpress它退出应用程序,因为我已经写在我的根背面退出代码的代码片段和我不想要这个代码来调用我的另一个第二个片段,因为我只需要一步回到我的前一个片段由于这里是代码 R.id.Recharge -> { val pl = Payment_History() fragmentTransaction = fragmentManager!!.beginTransaction() fragmentTransaction.replace(R.id.frame_container, paypal) fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() } 在支付历史中,我打电话回来按下覆盖功能 override fun onBackPressed(): Boolean { super.onBackPressed() } 并点击Paymenthistory它从应用程序调用退出代码。 我希望它回到以前的片段。 正如我写这个片段代码,但不工作。 任何人都有想法如何将第二个嵌套片段退回到以前的片段。 我的MainActivity中的OnBackPress代码 override fun onBackPressed() { // TODO Auto-generated method stub try { if (getFragmentManager().getBackStackEntryCount() == 0) { if (doubleBackToExitPressedOnce) { //super.onBackPressed(); val startMain = Intent(Intent.ACTION_MAIN) startMain.addCategory(Intent.CATEGORY_HOME) startMain.flags […]

在片段ViewPager不工作的第二次

我正在使用一个FrameLayout来显示一个包含ViewPager的片段。 有时候我需要换一个片段。 一切工作正常,直到我想回到包含ViewPager的片段。 这是我正在使用的代码: 包含ViewPager的片段: override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view : View = inflater!!.inflate(R.layout.main_quotes, null) val vpQuotes = view.findViewById<CustomViewPager>(R.id.vpQuotes) val vpAdapter = ViewPagerAdapter(activity.supportFragmentManager) vpQuotes.adapter = vpAdapter val vpPageChangeListener : ViewPager.OnPageChangeListener = object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: […]