浮动操作按钮,使用Fragments到MainActivity。 Android,Kotlin

时间:2018-06-17 01:53:23

标签: android kotlin floating-action-button

我对Android非常陌生,我知道我不太了解术语,所以我会尽力解释自己,请耐心等待。

我有一个应用程序,我需要它有4个标签,其中3个会做同样的,如果我只能使用一个片段并且显示它几次会更好(所以我没有3个确切相同的fragment.kt文件),最后一个将有一个不同的片段。

所以这是我的MainActivity.kt(尚未完成)

class MainActivity : AppCompatActivity(), TabLayout.OnTabSelectedListener{

    private lateinit var saleFragment1: SaleFragment1
    private lateinit var saleFragment2: SaleFragment2

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)
        init()
        fab.setOnClickListener { view ->
            //do something
        }
    }

    private fun init(){
        saleFragment1 = SaleFragment1()
        saleFragment2 = SaleFragment2()

        tabs.addTab(tabs.newTab().setText(getString(R.string.tab_0)))
        tabs.addTab(tabs.newTab().setText(getString(R.string.tab_1)))
        tabs.addTab(tabs.newTab().setText(getString(R.string.tab_2)))
        tabs.addTab(tabs.newTab().setText(getString(R.string.tab_3)))

        tabs.addOnTabSelectedListener(this)

        supportFragmentManager
                .beginTransaction()
                .add(R.id.container,saleFragment1)
                .commit()
    }

    override fun onTabReselected(tab: TabLayout.Tab?) {}

    override fun onTabUnselected(tab: TabLayout.Tab?) {}

    override fun onTabSelected(tab: TabLayout.Tab?) {
        when (tab!!.position){

            0 -> supportFragmentManager
                    .beginTransaction()
                    .replace(R.id.container, saleFragment1)
                    .commit()
            1 -> supportFragmentManager
                    .beginTransaction()
                    .replace(R.id.container, saleFragment2)
                    .commit()
            2 -> supportFragmentManager
                    .beginTransaction()
                    .replace(R.id.container,saleFragment1)
                    .commit()
            3 -> supportFragmentManager
                    .beginTransaction()
                    .replace(R.id.container,saleFragment1)
                    .commit()
        }
    }

    override fun onBackPressed() {
        val builder = AlertDialog.Builder(this)
        builder.setMessage("¿Seguro que desea salir?")
        builder.setPositiveButton("Salir") { dialog, which ->
            finish()
        }
        val dialog : AlertDialog = builder.create()
        dialog.show()
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        return when (item.itemId) {
            R.id.action_product-> {
                var intent = Intent(this, MenuProduct::class.java)
                startActivity(intent)
                return true
            }
            R.id.action_report -> {
                var intent = Intent(this, MenuReport::class.java)
                startActivity(intent)
                return true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }
}

如果有人指出我正确的方向,那将是很棒的。我需要能够在tab1中捕获一些数据,然后返回到tab2和tab3(甚至tab4以执行不同的操作),然后返回到任一选项卡以继续将内容添加到列表中。

嗯,这是一个问题。

现在,在我的片段中,我使用了2个类:LOGSale和ListSale。我想使用activity_main.xml中声明的FloatingActionButton来获取这两个对象并将它们插入到我的数据库中。因此,如果我在tab1中,它必须从相应的片段中抓取这两个对象,并能够用它们做些事情。有什么想法吗?

提前致谢。

0 个答案:

没有答案