بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
عدم نمایش محتویات tabLauoyt با رفتن به یک صفحه دیگر و برگشتن
ببخشید یک سوال
من یک bottom Navigation دارم که سه تا دکمه داره
دکمه اولیش اسمش home
و هر دکمه یک فرگمنت باز میکنه ..
حالا به فرگمنت اولم یک منوی Tablayout دادم که اون هم سه تا دکمه داره و سه تا فرگمنت باز میشوند برای هر دکمه تب یک فرگمنت در view Pager..
مشکل من :
برای بار اول تمامی تب ها کامل نمایش میدهد
ولی با زدن به یکی از دکمه های پایین و برگشتن به Tab ها محتویات دکمه وسط tabLayout را نمایش نمی دهد///
جالبه برنامه back می زنم چندین بار و میاد پایین و دوباره باز میکنم صفحه باز می شود...
زبان کاتلین چرا؟؟/
اداپتور فرگمنتها در تب لایوت
class ViewPagerAdapter(fm: FragmentManager): FragmentPagerAdapter(fm) {
var pagetitle=ArrayList<String>()
var pagefragment=ArrayList<Fragment>()
override fun getItem(position: Int): Fragment {
//return pagefragment[position]
when(position){
0 -> return pagefragment[0]
1 -> return pagefragment[1]
else -> return pagefragment[2]
}
}
override fun getCount(): Int {
return pagefragment.size
}
override fun getPageTitle(position: Int): CharSequence? {
return pagetitle[position]
}
//--------------------------------------------
fun addfragment(fragment: Fragment,title:String){
pagefragment.add(fragment)
pagetitle.add(title)
}
------------------------------------------------------------یکی از فرگمنت هام
class BuyFragment : Fragment() {
lateinit var viewFrag: View
lateinit var recyclerView: RecyclerView
lateinit var myadapter:AdapterBuy
var buyList = ArrayList<MyData>()
var key = Keys()
var dbPath = key.DATABASE_PATH
var dbName = key.DATABASE_NAME
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
viewFrag = inflater.inflate(R.layout.buy_fragment, container, false)
setUpView()
return viewFrag
}
fun setUpView() {
recyclerView = viewFrag.findViewById(R.id.recyclerViewID)
buy()
myadapter = AdapterBuy(context!!, buyList)
recyclerView.adapter = myadapter
recyclerView.layoutManager = LinearLayoutManager(context!!, LinearLayout.VERTICAL, false)
}
fun buy() {
buyList = ArrayList()
val databasebuy = SQLiteDatabase.openOrCreateDatabase(dbPath + dbName, null)
val cursor = databasebuy.rawQuery("SELECT * FROM data WHERE Subject = 'buy'", null)
try {
while (cursor.moveToNext()) {
val id = cursor.getInt(cursor.getColumnIndex("id"))
val title = cursor.getString(cursor.getColumnIndex("Title"))
val Capital = cursor.getString(cursor.getColumnIndex("Capital"))
val Des = cursor.getString(cursor.getColumnIndex("Description"))
val Img = cursor.getString(cursor.getColumnIndex("Image"))
val myData = MyData(id, title, Capital, Img, Des)
myData.id = id
myData.title = title
myData.capital = Capital
myData.image = Img
myData.des = Des
buyList.add(myData)
}
} finally {
cursor.close()
}
}
}
-----------------------------------------صفحه معرفی تب لایوت
class HomeFragment : Fragment() {
lateinit var toolbarTitle: TextView
lateinit var viewFrag: View
lateinit var viewPager: ViewPager
lateinit var tabLayout: TabLayout
lateinit var myAdapter: ViewPagerAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
viewFrag = inflater.inflate(com.example.lowbookmapp.R.layout.home_fragment, container, false)
setUpView()
setTabLayoutInFragment()
return viewFrag
}
override fun onResume() {
if (myAdapter != null) {
myAdapter.notifyDataSetChanged()
}
super.onResume()
}
fun setUpView() {
toolbarTitle = viewFrag.findViewById(R.id.textViewToolbarID)
toolbarTitle.text = "خانه"
}
private fun setTabLayoutInFragment() {
viewPager = viewFrag.findViewById(R.id.viewPagerID)
tabLayout = viewFrag.findViewById(R.id.tabLayoutID)
val newContext = context as AppCompatActivity
myAdapter = ViewPagerAdapter(newContext.supportFragmentManager)
val freeFragment = FreeFragment()
val buyFragment = BuyFragment()
val favFragment = FavFragment()
myAdapter.addfragment(freeFragment, "فهرست اول")
myAdapter.addfragment(buyFragment, "فهرست VIP")
myAdapter.addfragment(favFragment, "علاقه مندی ها")
viewPager.adapter = myAdapter
tabLayout.setupWithViewPager(viewPager)
//-----تعیین صفحه ی پیش فرض----
tabLayout.getTabAt(2)!!.select()
//---دادن آیکن به تب ها----
tabLayout.getTabAt(0)!!.setIcon(R.drawable.lock)
tabLayout.getTabAt(1)!!.setIcon(R.drawable.unlock)
tabLayout.getTabAt(2)!!.setIcon(R.drawable.like)
//----تعریف عملکرد کلیک روی هر تب---
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(position: TabLayout.Tab?) {
}
override fun onTabUnselected(position: TabLayout.Tab?) {
}
override fun onTabSelected(position: TabLayout.Tab?) {
}
})
}
}
-----------------------------------------------صفحه Bottom Navigation-------------------
class MainActivity : RuntimePermissionsActivity(), BottomNavigationView.OnNavigationItemSelectedListener {
var rwDB = RWDB(this)
var keys = Keys()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
fullScreenWindow()
setContentView(R.layout.activity_main)
/* val homeFragment = HomeFragment()
openFragment(homeFragment)*/
chekPermissions()
bottomNavigatoin_Id.setOnNavigationItemSelectedListener(this)
bottomNavigatoin_Id.selectedItemId=R.id.navigation_home
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.navigation_home -> {
val homeFragment = HomeFragment()
openFragment(homeFragment)
}
R.id.navigation_Setting -> {
val settingFragment = SettingFragment()
openFragment(settingFragment)
}
R.id.navigation_contact -> {
val infoFragment = InfoFragment()
openFragment(infoFragment)
}
}
return false
}
fun chekPermissions() {
requestPermissions(arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), keys.Code_Permition_CopyDB)
}
override fun onPermissionsGranted(requestCode: Int) {
when (requestCode) {
keys.Code_Permition_CopyDB -> {
rwDB.copyDataBase()
}
}}
override fun onPermissionsDeny(requestCode: Int) {
when (requestCode) {
keys.Code_Permition_CopyDB -> {
showToas(this, "دسترسی لازم به کپی فایل داده نشد لطفا مجددا تلاش کنید!")
}
}
}
//----------------------تابع فراخوانی و بازکردن فرگمنت--------------
fun openFragment(fragment: Fragment) {
val trans = supportFragmentManager.beginTransaction()
trans.replace(R.id.container, fragment)
trans .addToBackStack(null)
trans.commit()
}
//-----تابع فول اسکرین کردن صفحه نمایش حتی بدون اکشن بار------
fun fullScreenWindow() {
requestWindowFeature(Window.FEATURE_NO_TITLE)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
}
}
0
0
بهتره پروژه تون رو به پیوست ارسال کنید تا بهتر بشه راهنمایی تون کرد (4 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .