Как перейти от одного фрагмента к другому фрагменту по щелчку ImageView в Android?
У меня есть ImageView. Я хочу перейти от одного фрагмента к другому фрагменту одним щелчком изображения, таким же образом, как мы можем перейти от одного действия к другому с помощью
Intent i=new Intent(MainActivity.this,SecondActivity.class);
startActivity(i);
Как я могу это сделать? Может ли кто-нибудь объяснить мне шаг за шагом?
Мои коды выглядят следующим образом:
mycontacts.class
public class mycontacts extends Fragment {
public mycontacts() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = super.getView(position, convertView, parent);
ImageView purple=(ImageView)v.findViewById(R.id.imageView1);
purple.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//how to go to tasks fragment from here???
}
});
return view;
}
}
tasks.class
public class tasks extends Fragment {
public tasks() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout_one, container,
false);
return view;
}
}
Ответы
Ответ 1
purple.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = new tasks();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
вы пишете вышеприведенный код... там мы заменяем R.id.content_frame нашим фрагментом.
надеюсь, это поможет вам
Ответ 2
вы можете перейти к другому фрагменту с помощью транзакций FragmentManager. Фрагмент нельзя назвать подобной деятельностью. Фракции существуют в отношении существования деятельности.
Вы можете вызвать другой фрагмент, написав следующий код:
FragmentTransaction t = this.getFragmentManager().beginTransaction();
Fragment mFrag = new MyFragment();
t.replace(R.id.content_frame, mFrag);
t.commit();
здесь "R.id.content_frame" - это идентификатор макета, на котором вы хотите заменить фрагмент.
вы также можете добавить замену другого фрагмента.
Ответ 3
внутри вашего onClickListener.onClick, поместите
getFragmentManager().beginTransaction().replace(R.id.container, new tasks()).commit();
Другими словами, в вашем mycontacts.class
public class mycontacts extends Fragment {
public mycontacts() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = super.getView(position, convertView, parent);
ImageView purple = (ImageView) v.findViewById(R.id.imageView1);
purple.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getFragmentManager()
.beginTransaction()
.replace(R.id.container, new tasks())
.commit();
}
});
return view;
}
}
помните, что R.id.container
- это контейнер (FrameLayout или другие макеты) для действия, которое вызывает фрагмент