Framelayout 및 BottomNavigationView에 대한 작업이 있습니다 ... 4 조각 (A, B, C, D)이 있습니다 ... A가 B로 프래그먼트 B를로드하기 위해 메뉴 항목을 클릭 한 후 프래그먼트 A가 파손됩니다 ... 모든 콜백 메소드 (OnAttach, OnCreate, OnCreateView ..... 등)에 대한 로그 메시지를 추가하여 프래그먼트 수명주기 및 onDestroyView와 관련된 로그 메시지를 추가했습니다.bottomnavigationview 변경 항목을 클릭하면 프래그먼트가 다시 생성됩니다.
public class Home extends AppCompatActivity
{
private BottomNavigationView.OnNavigationItemSelectedListener
mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item)
{
Fragment fragment = null;
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
switch (item.getItemId())
{
case R.id.navigation_a:
if (!(currentFragment instanceof FragmentA))
fragment = FragmentA.newInstance();
break;
case R.id.navigation_b:
if (!(currentFragment instanceof FragmentB))
fragment = FragmentB.newInstance();
break;
case R.id.navigation_c:
if (!(currentFragment instanceof FragmentC))
fragment = FragmentC.newInstance();
break;
case R.id.navigation_d:
if (!(currentFragment instanceof FragmentD))
fragment = FragmentD.newInstance();
break;
}
if (fragment != null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
return true;
}
return false;
}
};
//TODO Handle life-cycle methods when switching between fragments
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction()
.add(R.id.fragment_container, FragementA.newInstance())
.commit();
fm.popBackStack();
BottomNavigationView navigation = findViewById(R.id.navigation); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
moveTaskToBack(true);
return true;
}
return false;
}
}
:
여기 내 활동 클래스의 .. 내가 조각을 변경할 때 항상 ...라고 그래서 나는 이전에 열었던 조각에 돌아올 때, onCreateView 다시 호출되는 여기에 실종 된 것이 무엇인지 알고 싶습니다 .... 사전에 감사드립니다.
@Claude ... 알아 냈어? – GvSharma
@GvSharma .... 나는 나의 늦은 응답 친구에게 정말로 유감스럽게 생각한다 !! ... 실제로 나는 내부의 viewpager를 사용했다. 나는 급한 것에서 아래 제안 된 아이디어를 시험 할 시간이 없었다. 그러나 백스트록에 조각을 추가하는 것이 확실히 문제를 해결한다고 생각합니다. –