BottomNavigationView를 사용하고 있습니다. 양식이있는 탭이 세 개 있습니다. 사용자가 다른 탭으로 이동 한 다음 다시 올 때 필드에 쓴 내용을 유지하려고합니다. BottomNavigationView가 포함 된 활동입니다.BottomNavigationView를 사용하여 조각 상태 저장
@Override
public void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString(KEY_NUMBER, keyNumberField.getText().toString());
savedInstanceState.putString(CUSTOMER, customerField.getText().toString());
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
String keyNumber = savedInstanceState.getString(KEY_NUMBER);
keyNumberField.setText(keyNumber);
String customer = savedInstanceState.getString(CUSTOMER);
customerField.setText(customer);
}
}
을하지만 다른 탭으로 이동하면 onSaveInstanceState가 호출되지 않습니다 :
public class MainActivity extends BaseActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
@BindView(R.id.bottom_navigation)
BottomNavigationView navigation;
@BindView(R.id.toolbar)
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initToolbar();
navigation.setOnNavigationItemSelectedListener(this);
//select first tab
navigation.setSelectedItemId(R.id.navigation_expiration_key);
}
@Override
protected void initializeDagger() {
((MainApplication) getApplicationContext()).getAppComponent().inject(this);
}
@Override
protected void initializePresenter() {
}
@Override
public int getLayoutId() {
return R.layout.activity_main;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_expiration_key:
selectedFragment = KeyExpirationFragment.newInstance();
break;
case R.id.navigation_place_identification:
selectedFragment = LockIdentificationFragment.newInstance();
break;
case R.id.navigation_bt_key:
selectedFragment = BtKeyValidationMenuFragment.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_container, selectedFragment);
transaction.commit();
return true;
}
나는이를 사용하여 조각에 상태를 저장하려고했습니다. 앱을 탐색 할 때 파편 상태를 저장해서는 안된다는 것을 알고 있습니다. 그리고 이것은 f. 전화가 회전합니다.
그러나 우리는 ViewPager 등으로 상태를 저장하므로 이러한 상태를 올바르게 유지하는 방법이 있어야합니다. 공유 환경 설정 또는 불량 수정을 사용하지 않습니다.
감사합니다.
보기 호출기를 사용하고 있습니까? –
전혀 아님. 당신이 볼 수있는 모든 것. – Rober