java - 如何在 android studio 中的片段上使用 beginTransaction.hide().show() 而不是 beginTransaction().replace()?
问题描述
从我开始学习 android studio 到现在才几天,今天是我偶然发现碎片的一天。我正在使用 beginTransaction.replace() 方法来替换片段,但这只是每次都创建一个新片段。我已经实现了一个底部导航视图,其中包含菜单中每个相应项目的片段。这是我的代码:
package com.example.application;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class Application extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_application);
BottomNavigationView bottomNav = findViewById(R.id.bottomNavigationView);
bottomNav.setOnNavigationItemSelectedListener(navListener);
}
private BottomNavigationView.OnNavigationItemSelectedListener navListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.firstPage:
selectedFragment = new firstFragment();
break;
case R.id.secondPage:
selectedFragment = new secondFragment();
break;
case R.id.thirdPage:
selectedFragment = new thirdFragment();
break;
case R.id.fourthPage:
selectedFragment = new fourthFragment();
break;
case R.id.fifthPage:
selectedFragment = new fifthFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment, selectedFragment).commit();
return true;
}
};
}
replace() 方法不好,因为我需要为每个片段保存状态。我不想使用 onSaveInstanceState 方法来保存状态,因为它们只是令人沮丧。我需要的是替换代码:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment, selectedFragment).commit();
用隐藏和显示替换替换方法。我需要隐藏最后选择的片段并显示当前选择的片段。如何做到这一点?
而且我还想知道 Facebook、Instagram 等大型应用程序如何保持它们的状态,即使用户向下滚动数千个帖子。希望你能回答。问候。
解决方案
推荐阅读
- node.js - Reactjs -Heroku:错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]:包子路径 './lib/tokenize' 未由 /tmp/build_4dbbd649/ 中的“导出”定义
- mysql - 在行首以任意顺序匹配所有指定字符的正则表达式
- c# - gRPC ResponseTrailers 无法正常工作
- azure-sql-database - Azure 应用服务无法连接到恢复的 Azure SQL DB
- csv - GenericParserAdapter - 解析 ebay csv 交易
- c# - 在 datalist 中以字节为单位显示默认图像或图像 - asp.net
- reactjs - 我正在尝试将 Json 字符串导出到 react 并在控制台中显示,但我收到一个逗号错误但无法确定将其放置在哪里
- javascript - React Native 垂直滑块库
- python - 如何在屏幕上获取由 tkinter 包创建的复选框的坐标
- google-apps-script - 从最后一行复制特定的列数据并粘贴到另一个工作表