【问题标题】:Fragment not showing in the Main Screen [duplicate]片段未显示在主屏幕中[重复]
【发布时间】:2018-01-27 12:59:12
【问题描述】:

我正在创建一个音乐播放器,并为此制作了一些片段。我正在使用显示设备中歌曲列表的主屏幕片段。但是当我尝试打开应用程序时,它显示给我一个空白屏幕。我还在我的回收站视图中将此片段附加到所有歌曲选项,当我再次单击所有歌曲选项时,它再次向我显示空白屏幕。有什么问题,我错过了什么。

这是我的 MainActivity.kt 文件和 MainScreenFragment.kt 文件的代码。

MainActivity.kt

类 MainActivity : AppCompatActivity(){

var navigationDrawerIconList : ArrayList<String> = arrayListOf()

var images_for_navdrawer = intArrayOf(R.drawable.navigation_allsongs, R.drawable.navigation_favorites,
        R.drawable.navigation_settings, R.drawable.navigation_aboutus)

object Statified{
    var drawerLayout : DrawerLayout?=null
}


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)


    setContentView(R.layout.activity_main)
    val toolbar = findViewById<Toolbar>(R.id.toolbar)
    setSupportActionBar(toolbar)
   MainActivity.Statified.drawerLayout=findViewById(R.id.drawer_layout)

   // drawerLayout=findViewById<DrawerLayout>(R.id.drawer_layout) as DrawerLayout


    navigationDrawerIconList.add("All Songs")
    navigationDrawerIconList.add("Favorites")
    navigationDrawerIconList.add("Settings")
    navigationDrawerIconList.add("About Us")

    val toggle = ActionBarDrawerToggle(this@MainActivity, MainActivity.Statified.drawerLayout, toolbar,
            R.string.navigation_drawer_open, R.string.navigation_drawer_close)
    MainActivity.Statified.drawerLayout?.setDrawerListener(toggle)
    toggle.syncState()

    val mainScreenFragment = MainScreenFragment()
    this.supportFragmentManager
            .beginTransaction()
            .add(R.id.details_fragment, mainScreenFragment, "MainScreenFragment")
            .commit()




    //Navigation Drawer

    var _navigationAdapter = NavigationDrawerAdapter(navigationDrawerIconList, images_for_navdrawer, this@MainActivity)

    _navigationAdapter.notifyDataSetChanged()

    var navigation_recycler_view = findViewById<RecyclerView>(R.id.navigation_recycler_view)
    navigation_recycler_view.layoutManager = LinearLayoutManager(this@MainActivity)
    navigation_recycler_view.itemAnimator = DefaultItemAnimator()
    navigation_recycler_view.adapter = _navigationAdapter
    navigation_recycler_view.setHasFixedSize(true)


  //  var navigation_recycler_view = findViewById<RecyclerView>(R.id.navigation_recycler_view)
    //navigation_recycler_view.layoutManager = LinearLayoutManager(this)
    //navigation_recycler_view.itemAnimator = DefaultItemAnimator()

}

override fun onStart() {
    super.onStart()
}

}

MainScreenFragment.kt

类 MainScreenFragment : Fragment() {

var getSongList : ArrayList<Songs>? = null
var nowPlayingBottomBar: RelativeLayout?=null
var playPauseButton: ImageView?=null
var songTitle: TextView?=null
var visibleLayout: RelativeLayout?=null
var noSongs: RelativeLayout?=null
var recyclerView: RecyclerView?= null

var myActivity:Activity?=null

var _mainScreenAdapter : MainScreenAdapter?=null

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {

    val view = inflater?.inflate(R.layout.content_main, container, false)
    setHasOptionsMenu(true)
    activity.title = "All songs"
    visibleLayout = view?.findViewById<RelativeLayout>(R.id.visibleLayout)
    noSongs = view?.findViewById<RelativeLayout>(R.id.noSongs)
    nowPlayingBottomBar = view?.findViewById<RelativeLayout>(R.id.hiddenBarMainScreen)
    songTitle = view?.findViewById<TextView>(R.id.songTitleMainScreen)
    playPauseButton = view?.findViewById<ImageButton>(R.id.playpauseButton)
    (nowPlayingBottomBar as RelativeLayout).isClickable = false
    recyclerView = view?.findViewById<RecyclerView>(R.id.contentMain)

    if (getSongList == null) {
        getSongList = getSongsFromPhone()
        if (getSongList == null) {
            visibleLayout?.visibility = View.INVISIBLE
            noSongs?.visibility = View.VISIBLE
        }
    } else {
        Log.d(MainScreenFragment::class.java.simpleName, " Data already there")
    }



    getSongList = getSongsFromPhone()
    _mainScreenAdapter = MainScreenAdapter(getSongList as ArrayList<Songs>, activity)
    val mLayoutManager = LinearLayoutManager(activity)
    (recyclerView as RecyclerView).layoutManager = mLayoutManager
    (recyclerView as RecyclerView).itemAnimator = DefaultItemAnimator()
    (recyclerView as RecyclerView).adapter = _mainScreenAdapter
    return view



    // Inflate the layout for this fragment
   /* val view = inflater!!.inflate(R.layout.fragment_main_screen, container, false)
    visibleLayout = view?.findViewById<RelativeLayout>(R.id.visibleLayout)
    noSongs = view?.findViewById<RelativeLayout>(R.id.noSongs)
    nowPlayingBottomBar = view?.findViewById<RelativeLayout>(R.id.hiddenBarMainScreen)
    songTitle = view?.findViewById<TextView>(R.id.songTitleMainScreen)
    playPauseButton = view?.findViewById<ImageButton>(R.id.playPauseButton)
    recyclerView = view?.findViewById<RecyclerView>(R.id.contentMain)


    return view*/
}

fun getSongsFromPhone(): ArrayList<Songs>{
    var arrayList = ArrayList<Songs>()
    var contentResolver = myActivity?.contentResolver
    var songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
    var songCursor = contentResolver?.query(songUri, null, null, null, null)
    if(songCursor!=null && songCursor.moveToFirst()){
        val songId = songCursor.getColumnIndex(MediaStore.Audio.Media._ID)
        val SongTitle = songCursor.getColumnIndex((MediaStore.Audio.Media.TITLE))
        val songArtist = songCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)
        val songData = songCursor.getColumnIndex(MediaStore.Audio.Media.DATA)
        val dateIndex = songCursor.getColumnIndex(MediaStore.Audio.Media.DATE_ADDED)

        while(songCursor.moveToNext()){
            var currentId = songCursor.getLong(songId)
            var currentTitle = songCursor.getString(SongTitle)
            var currentArtist = songCursor.getString(songArtist)
            var currentData = songCursor.getString(songData)
            var currentDate = songCursor.getString(dateIndex)
        }
    }
    return arrayList
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)

    getSongList = getSongsFromPhone()
   _mainScreenAdapter = MainScreenAdapter(getSongList as ArrayList<Songs>, myActivity as Context)
    val mLayoutManager = LinearLayoutManager(myActivity)
    recyclerView?.layoutManager = mLayoutManager
    recyclerView?.itemAnimator = DefaultItemAnimator()
    recyclerView?.adapter = _mainScreenAdapter
}


override fun onAttach(context: Context?) {
    super.onAttach(context)
    myActivity = context as Activity
}

override fun onAttach(activity: Activity?) {
    super.onAttach(activity)
    myActivity = activity
}

}

【问题讨论】:

    标签: java android android-fragments kotlin


    【解决方案1】:

    这是一个摘要

      private void setUpRecycler() {
        noteAdapter = new NoteAdapter(noteModelList, v.getContext());
        layoutManager = new LinearLayoutManager(v.getContext(), LinearLayoutManager.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.addItemDecoration(new DividerItemDecoration(v.getContext(), DividerItemDecoration.VERTICAL));
        recyclerView.setAdapter(noteAdapter);
    }
    

    //现在当你加载数据时,再次调用

    noteAdapter = new NoteAdapter(noteModelList, v.getContext());
            recyclerView.setAdapter(noteAdapter);
            noteAdapter.notifyDataSetChanged();
    

    【讨论】:

      猜你喜欢
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      相关资源
      最近更新 更多