【发布时间】:2021-10-23 17:03:09
【问题描述】:
我有这个片段用 viewPager 处理 3 个项目:
onCreateView:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view: View = inflater.inflate(R.layout.fragment_ejournal, container, false)
viewPager2 = view.findViewById(R.id.viewpager_main)
tabs = view.findViewById(R.id.tabs_main)
item1 = view.findViewById(R.id.item1);
item1.setText("My Planner")
item2 = view.findViewById(R.id.item2);
item2.setText("My Heart")
item3 = view.findViewById(R.id.item3);
item3.setText("My Soul")
item1.setOnClickListener(this);
item2.setOnClickListener(this);
item3.setOnClickListener(this);
def = item2.getTextColors();
val fragmentAdapter = EjournalAdapter(childFragmentManager)
viewPager2.adapter = fragmentAdapter
viewPager2.isNestedScrollingEnabled = false
tabs.setupWithViewPager(viewPager2)
return view
}
点击功能:
override fun onClick(view: View) {
if(view.id == R.id.item1)
{
item1.setTextColor(R.color.maincolor_purple)
item1.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_selected
)
item2.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_unselected
)
item3.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_unselected
)
item1.elevation = 3F
item2.elevation = 2F
item3.elevation = 1F
item2.setTextColor(def);
item3.setTextColor(def);
viewPager2.setCurrentItem(0)
}
else if (view.id == R.id.item2)
{
item1.setTextColor(def)
item1.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_unselected
)
item2.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_selected
)
item3.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_unselected
)
item2.setTextColor(R.color.maincolor_purple)
item1.elevation = 1F
item2.elevation = 3F
item3.elevation = 2F
item3.setTextColor(def)
val size = item2.width
viewPager2.setCurrentItem(1)
}
else if (view.id == R.id.item3)
{
item1.setTextColor(def)
item1.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_unselected
)
item2.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_unselected
)
item3.background = ContextCompat.getDrawable(
requireContext(),
R.drawable.tab_bg_selected
)
item3.setTextColor(R.color.maincolor_purple)
item1.elevation = 1F
item2.elevation = 2F
item3.elevation = 3F
item2.setTextColor(def)
val size = item2.width * 2
viewPager2.setCurrentItem(2)
}
}
所以上面的代码在一个片段中,每个项目将导航到不同的片段
一切正常,但是当我单击任何项目以导航到不同的片段并从该片段按返回以返回此项目时,项目选择将始终返回到第一个项目
例如,item2 将导航到“我的心”片段,当我从“我的心”片段按回时,我希望选择的项目是“我的心”项目
如何做到这一点?
在我调用的另一个片段中:
getActivity()?.onBackPressed();
【问题讨论】:
标签: java android kotlin android-fragments android-viewpager