如何在单击按钮时从活动转到片段,在底部导航中我正在使用片段

时间:2019-02-22 06:11:40

标签: android android-fragments android-activity

我在我的android应用程序的底部导航栏中使用了三个片段,在其中一个片段中,我正在使用日历视图,单击日历日期后,我将转到该活动,并在其中给出了一个按钮,单击按钮,我试图转到底部导航中使用的片段之一。谁能告诉我该怎么做?

我正在使用此代码:

    val ft = supportFragmentManager.beginTransaction()
            ft.replace(R.id.fragmentContainer, fragment)
           ft.commit()

,但是它不起作用。 我尝试了以下代码行:

var i=Intent(this,RemarksFragment::class.java)
        startActivity(i)

但这也不起作用。

2 个答案:

答案 0 :(得分:0)

  

onClick日历日期表示您打算使用ActivityX。   您想返回上一个活动,该活动具有底部导航栏。

     

开始活动以获得结果。这样您就可以返回活动   从ActivityX中获取一些数据。

内部BottomNavActivity

val intent = Intent(this@BottomNavActivity, ActivityX::class.java); 
startActivityForResult(intent, 1001); 

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if(requestCode == 1001 && data != null) {
        if(resultCode == RESULT_OK) {
            // your data will be here
           String value = data.getStringExtra("KEY");
              //based on your value, launch the fragment
        }
    }
}

在ActivityX

onClick(view : View) {
     val intent = getIntent();
     intent.putExtra("KEY", "VALUE");
     setResult(RESULT_OK, intent);
     finish();
}

答案 1 :(得分:0)

将开始活动用于结果方法:

val intent = Intent(this,CalendarActivity::class.java)
startActivityForResult(intent,REQUEST_CODE(int))

然后在按下Calendar活动后,您可以像这样重写onBackPressed方法:

 override fun onBackPressed() {
   val data = Intent().putExtra("key","fragment index to switch")
   setResult(Activity.RESULT_OK,data)
   finish()
} 

现在通过底部导航栏进行活动:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE(int) && resultCode == RESULT_OK) {
        val index = data.getIntExtra("key")
        //Then switch your fragment here.
    }
}

如果不想切换,可以将结果设置为:

setResult(Activity.RESULT_CANCELLED)

希望这会有所帮助。