我有一个片段类 我有一个可点击的线性布局 和一个可点击的按钮。
所以我想知道,当我点击线性布局时,它应该从片段1开始 当我点击按钮时,它应该开始片段2
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
LinearLayout l = (LinearLayout) rootView.findViewById(R.id.line1);
l.setOnClickListener(this);
Button b = (Button) rootView.findViewById(R.id.map_button);
b.setOnClickListener(this);
return rootView;
}
@Override
public void onClick(View v) {
Fragment frag = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.frame_container, frag);
ft.addToBackStack(null);
ft.commit();
Fragment frag = new Fragment2();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.frame_container, frag);
ft.addToBackStack(null);
ft.commit();
答案 0 :(得分:0)
在按钮上添加onClickListener并尝试在单击时显示片段。
@Override
public void onClick(View v) {
Fragment fragment = new Fragment1();
FragmentTransaction fragmentTr = getFragmentManager().beginTransaction();
fragmentTr .setCustomAnimations(android.R.animator.fade_in,
android.R.animator.fade_out);
if (fragment.isHidden())
fragmentTr.show(fragment);
}
编辑:
您可以使用switch case语句获取单击的视图:
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.Button:
// show fragment x
case R.id.LinearLayout:
// show fragment y
}
}
答案 1 :(得分:0)
当你说setOnClickListener(this)你引用类的onClick方法时,你的onClick方法必须知道被点击了什么。在你的代码中,无论用户点击什么,都将执行整个onClick方法。为了指定要执行的正确代码块,您可以使用Switch和case。