我在我的android应用程序的底部导航栏中使用了三个片段,在其中一个片段中,我正在使用日历视图,单击日历日期后,我将转到该活动,并在其中给出了一个按钮,单击按钮,我试图转到底部导航中使用的片段之一。谁能告诉我该怎么做?
我正在使用此代码:
val ft = supportFragmentManager.beginTransaction()
ft.replace(R.id.fragmentContainer, fragment)
ft.commit()
,但是它不起作用。 我尝试了以下代码行:
var i=Intent(this,RemarksFragment::class.java)
startActivity(i)
但这也不起作用。
答案 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)
希望这会有所帮助。