다른 조각에서 새 조각을 열려면 어떻게합니까?
조각 간 탐색을 시도했습니다. 나는 NewFragment.java
새로운 조각이 작동하는 것을 가지고 있습니다. 내 문제는 :
올바르게 onClickListener
실행하려면 어떻게해야 NewFragment.java
합니까?
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), NewFragment.class);
startActivity(i);
}
});
참고 : 이것은 조각 내부에서 가져온 것입니다 (중요한지 모르겠습니다).
클릭 리스너 함수에 다음 코드를 추가합니다.
NextFragment nextFrag= new NextFragment();
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.Layout_container, nextFrag, "findThisFragment")
.addToBackStack(null)
.commit();
"findThisFragment"
필요한 경우 나중에 조각을 찾는 데 문자열을 사용할 수 있습니다.
이것은 @Narendra의 코드에 대한 자세한 설명 코드입니다.
먼저 두 번째 조각의 인스턴스가 필요합니다. 그런 다음 FragmentManager 및 FragmentTransaction의 개체가 있어야합니다. 전체 코드는 다음과 같습니다.
Fragment2 fragment2=new Fragment2();
FragmentManager fragmentManager=getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_main,fragment2,"tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
이것이 효과가 있기를 바랍니다. 때때로 getFragmentManager () 대신 getSupportFragmentManager ()를 얻을 수 있습니다.
새 프래그먼트를 열고 액티비티 참조를 프래그먼트에 전달하고 프래그먼트 내부의 일부 이벤트에서이 함수를 호출하려면 액티비티 내부에 함수를 만들어야합니다.
@Override
public void onListItemClick(ListView l, View v, int pos, long id) {
super.onListItemClick(l, v, pos, id);
UserResult nextFrag= new UserResult();
this.getFragmentManager().beginTransaction()
.replace(R.id.content_frame, nextFrag, null)
.addToBackStack(null)
.commit();
}
이것을 사용하십시오.
AppCompatActivity activity = (AppCompatActivity) view.getContext();
Fragment myFragment = new MyFragment();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();
Fragment fr = new Fragment_class();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.add(R.id.viewpagerId, fr);
fragmentTransaction.commit();
정확히 말하면 R.id.viewpagerId
현재 클래스 레이아웃에 생성되며 호출시 새 조각이 자동으로 침투합니다.
@Narendra 솔루션에 추가 중 ...
중요 : 조각으로 작업 할 때 탐색은 호스트 활동과 밀접한 관련이 있으므로 호스트 활동에서 해당 조각 클래스를 구현하지 않고 조각에서 조각으로 이동할 수 없습니다.
견본:
public class MyHostActivity extends AppCompatActivity implements MyFragmentOne.OnFragmentInteractionListener {
또한 호스트 활동에 다음 재정의 기능이 있는지 확인하십시오.
@Override public void onFragmentInteraction(Uri uri) {}
도움이 되었기를 바랍니다...
참고 URL : https://stackoverflow.com/questions/21028786/how-do-i-open-a-new-fragment-from-another-fragment
'IT박스' 카테고리의 다른 글
git의 ANSI 색상이 올바르게 표시되지 않습니다. (0) | 2020.12.04 |
---|---|
matplotlib 막대 그래프 검정-막대 테두리를 제거하는 방법 (0) | 2020.12.04 |
BEM 블록, 이름 지정 및 중첩 (0) | 2020.12.04 |
부호없는 정수가 오류가 발생하기 쉬운 이유는 무엇입니까? (0) | 2020.12.04 |
.toInt ()가 Swift 2에서 제거 되었습니까? (0) | 2020.12.04 |