Java 导航抽屉后压碎片不';t载荷
我有一个带有碎片的Java 导航抽屉后压碎片不';t载荷,java,android,android-fragments,android-recyclerview,Java,Android,Android Fragments,Android Recyclerview,我有一个带有碎片的导航抽屉。开始时,我默认显示Home fragment 导航菜单上有一些选项。在2个片段中,我有SwipeRefreshLayout。在提取所有的recyclerview数据之前,我将显示数据和不可见的SwipeRefreshLayout 其中一个片段(包括SwipeRefReshLayout)工作正常,但在主片段中出现了一些问题 例如(用例) 您启动了应用程序,看到了Home fragment 您单击了导航菜单上的配置文件片段 您可以按后退按钮(后退按钮)运行 在这种情况下,
导航抽屉。开始时,我默认显示Home fragment
导航菜单上有一些选项。在2个片段中,我有SwipeRefreshLayout
。在提取所有的recyclerview
数据之前,我将显示数据和不可见的SwipeRefreshLayout
其中一个片段(包括SwipeRefReshLayout
)工作正常,但在主片段中出现了一些问题
例如(用例)
您启动了应用程序,看到了Home fragment
您单击了导航菜单上的配置文件片段
您可以按后退按钮(后退按钮)运行
在这种情况下,数据永远不会加载,布局总是旋转。(我也试过不刷新布局,还是一样)
你知道怎么解决这个问题吗?我的想法是,它是关于显示默认片段的
Fragment fragment;
public void displayDefaultFragment() {
fragment = new Nav_Home();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).commit();
}
public void showProfileFragment() {
fragment = new Nav_Profile();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).addToBackStack(null).commit();
}
导航抽屉活动
public class Page_Navigation extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
Fragment fragment;
FragmentManager fragmentManager = getSupportFragmentManager();
NavigationView navigationView;
SharedPreferences mSharedPref;
DrawerLayout drawer;
private Tracker mTracker;
FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page__navigation);
//
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
TextView toolbar_head = findViewById(R.id.toolbar_head);
ImageView toolbar_image = findViewById(R.id.toolbar_image);
ImageView toolbar_profile = findViewById(R.id.toolbar_profile);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
//
AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();
mTracker.setScreenName("page_navigation");
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
//FIRST SETTINGS
setSupportActionBar(toolbar);
Typeface customFont = Typeface.createFromAsset(getAssets(), "Montserrat-Medium.ttf");
toolbar_head.setTypeface(customFont);
//Get Sessions
mSharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String session_user_name = mSharedPref.getString("session_user_name", "");
String session_user_photo = mSharedPref.getString("session_user_photo", "");
//Navigation Drawer
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null);
//
View headerView = navigationView.getHeaderView(0);
TextView nav_userName = (TextView) headerView.findViewById(R.id.textView_nav_userName);
CircleImageView imageView_navigation = (CircleImageView) headerView.findViewById(R.id.imageView_navigation);
Glide.with(getApplicationContext()).load(session_user_photo).into(imageView_navigation);
nav_userName.setText(session_user_name);
headerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (drawer.isDrawerOpen(Gravity.START)) {
drawer.closeDrawer(Gravity.START);
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showProfileFragment();
}
}, 300);
}
});
toolbar_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(GravityCompat.START);
}
});
toolbar_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment;
FragmentManager manager = getSupportFragmentManager();
fragment = new Nav_Profile();
fragmentTransaction = manager.beginTransaction();
fragmentTransaction.replace(R.id.navContent, fragment).addToBackStack(null).commit();
}
});
displayDefaultFragment();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.page__navigation, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
final int id = item.getItemId();
drawer.closeDrawer(GravityCompat.START);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
switch (id) {
case R.id.nav_home:
fragment = new Nav_Home();
break;
case R.id.nav_contact:
fragment = new Nav_Contact();
break;
case R.id.nav_articles:
fragment = new Nav_Article();
break;
case R.id.nav_about:
fragment = new Nav_AboutUs();
break;
case R.id.nav_suggest:
fragment = new Nav_Suggest();
break;
case R.id.nav_share:
fragment = new Nav_Share();
break;
case R.id.nav_rateApp:
fragment = new Nav_RateApp();
break;
}
fragmentManager.beginTransaction()
.replace(R.id.navContent, fragment)
.addToBackStack(null)
.commit();
}
}, 350);
return true;
}
public void displayDefaultFragment() {
fragment = new Nav_Home();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).commit();
}
public void showProfileFragment() {
fragment = new Nav_Profile();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).addToBackStack(null).commit();
}
}
主片段
public class Nav_Home extends Fragment implements View.OnClickListener{
SharedPreferences mSharedPref;
private SwipeRefreshLayout swipeRefresh_home;
private CardView item_homeTop_coupons, item_homeTop_draws, item_homeTop_event;
private LinearLayout layout_all_article, layout_all_999;
private ScrollView shimmer_home;
private List<Model_ListItem> listNewItems;
private RecyclerView recyclerView_item_home;
private List<Model_Article> articleList;
private RecyclerView recyclerView_article_home;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fetchItemsNew();
fetchArticlesNew();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_nav__home, container, false);
item_homeTop_coupons = view.findViewById(R.id.item_homeTop_coupons);
item_homeTop_draws = view.findViewById(R.id.item_homeTop_draws);
item_homeTop_event = view.findViewById(R.id.item_homeTop_event);
recyclerView_item_home = view.findViewById(R.id.recyclerView_item_home);
recyclerView_article_home = view.findViewById(R.id.recyclerView_article_home);
layout_all_article = view.findViewById(R.id.layout_all_article);
layout_all_999 = view.findViewById(R.id.layout_all_999);
swipeRefresh_home = view.findViewById(R.id.swipeRefresh_home);
shimmer_home = view.findViewById(R.id.shimmer_home);
item_homeTop_coupons.setOnClickListener(this);
item_homeTop_draws.setOnClickListener(this);
item_homeTop_event.setOnClickListener(this);
layout_all_999.setOnClickListener(this);
layout_all_article.setOnClickListener(this);
//first settngs
mSharedPref = PreferenceManager.getDefaultSharedPreferences(view.getContext());
String session_user_email = mSharedPref.getString("session_user_email","");
swipeRefresh_home.setRefreshing(true);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.item_homeTop_coupons:
startActivity(new Intent(getContext(), Page_Coupon.class));
break;
case R.id.item_homeTop_draws:
startActivity(new Intent(getContext(), Page_Draw.class));
break;
case R.id.item_homeTop_event:
startActivity(new Intent(getContext(), Page_Event.class));
break;
case R.id.layout_all_999:
//999 city search activity
startActivity(new Intent(getContext(), Page_SearchCity.class));
break;
case R.id.layout_all_article:
//article fragment
Fragment fragment;
FragmentManager fragmentManager = getFragmentManager();
fragment = new Nav_Article();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).addToBackStack(null).commit();
break;
}
}
public void fetchItemsNew(){
listNewItems = new ArrayList<>();
API_Service api_service = Client.getRetrofitInstance().create(API_Service.class);
Call<List<Model_ListItem>> call = api_service.fetchItemsNew();
call.enqueue(new Callback<List<Model_ListItem>>() {
@Override
public void onResponse(Call<List<Model_ListItem>> call, Response<List<Model_ListItem>> response) {
if(response.code() == 200){
listNewItems = response.body();
Adapter_HomeItem adapter_homeItem = new Adapter_HomeItem(getContext(), listNewItems);
LinearLayoutManager layoutManager
= new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerView_item_home.setHasFixedSize(true);
recyclerView_item_home.setLayoutManager(layoutManager);
recyclerView_item_home.setAdapter(adapter_homeItem);
SnapHelper helper = new LinearSnapHelper();
helper.attachToRecyclerView(recyclerView_item_home);
}
}
@Override
public void onFailure(Call<List<Model_ListItem>> call, Throwable t) {
}
});
}
public void fetchArticlesNew(){
articleList = new ArrayList<>();
API_Service api_service = Client.getRetrofitInstance().create(API_Service.class);
Call<List<Model_Article>> callArticle = api_service.fetchArticlesNew();
callArticle.enqueue(new Callback<List<Model_Article>>() {
@Override
public void onResponse(Call<List<Model_Article>> call, Response<List<Model_Article>> response) {
if(response.code() == 200){
articleList = response.body();
Adapter_HomeArticles adapter_homeArticles = new Adapter_HomeArticles(getContext(), articleList);
LinearLayoutManager layoutManager
= new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
recyclerView_article_home.setLayoutManager(layoutManager);
recyclerView_article_home.setHasFixedSize(true);
recyclerView_article_home.setAdapter(adapter_homeArticles);
}
}
@Override
public void onFailure(Call<List<Model_Article>> call, Throwable t) {
}
});
}
}
公共类Nav_Home扩展片段实现View.OnClickListener{
共享引用mSharedPref;
私人swipeRefresh布局swipeRefresh_home;
私人卡查看项目\主页\优惠券、项目\主页\抽奖、项目\主页\活动;
私人线路布局布局所有文章,布局所有999;
私人ScrollView shimmer_主页;
私有列表项;
私人回收站查看回收站查看物品;
私人物品清单;
私人回收站查看回收站查看文章;
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
fetchItemsNew();
fetchArticlesNew();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u nav\u home,container,false);
item\u homeTop\u优惠券=view.findViewById(R.id.item\u homeTop\u优惠券);
item\u homeTop\u draws=view.findViewById(R.id.item\u homeTop\u draws);
item\u homeTop\u event=view.findviewbyd(R.id.item\u homeTop\u event);
recyclerView\u item\u home=view.findViewById(R.id.recyclerView\u item\u home);
recyclerView\u article\u home=view.findviewbyd(R.id.recyclerView\u article\u home);
layout\u all\u article=view.findviewbyd(R.id.layout\u all\u article);
layout_all_999=view.findviewbyd(R.id.layout_all_999);
swipeRefresh\u home=view.findViewById(R.id.swipeRefresh\u home);
shimmer_home=view.findviewbyd(R.id.shimmer_home);
item_homeTop_优惠券。setOnClickListener(此);
item_homeTop_draws.setOnClickListener(此);
item_homeTop_event.setOnClickListener(此);
布局_all _999.setOnClickListener(此);
布局所有文章。setOnClickListener(此);
//第一组
mSharedPref=PreferenceManager.getDefaultSharedReferences(view.getContext());
String session\u user\u email=mSharedPref.getString(“session\u user\u email”,”);
swipeRefresh_home.setRefreshing(true);
返回视图;
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.item\u homeTop\u优惠券:
startActivity(新的意图(getContext(),Page_consupt.class));
打破
案例R.id.item\u homeTop\u图纸:
startActivity(新意图(getContext(),Page_Draw.class));
打破
案例R.id.item\u homeTop\u事件:
startActivity(新意图(getContext(),Page_Event.class));
打破
案例R.id.Layou all_999:
//999城市搜索活动
startActivity(新意图(getContext(),Page_SearchCity.class));
打破
案例R.id.Layou所有文章:
//文章片段
片段;
FragmentManager FragmentManager=getFragmentManager();
片段=新的导航文章();
fragmentManager.beginTransaction().replace(R.id.navContent,fragment).addToBackStack(null.commit();
打破
}
}
public void fetchItemsNew(){
listNewItems=newArrayList();
API_服务API_服务=Client.getInstance().create(API_服务.class);
Call Call=api_service.fetchItemsNew();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.code()==200){
listNewItems=response.body();
Adapter\u HomeItem Adapter\u HomeItem=新适配器\u HomeItem(getContext(),listNewItems);
直线布局经理布局经理
=新的LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false);
recyclerView\u item\u home.setHasFixedSize(true);
recyclerView_item_home.setLayoutManager(layoutManager);
recyclerView\u item\u home.setAdapter(适配器\u home项);
SnapHelper helper=新的LinearSnapHelper();
helper.attachToRecyclerView(recyclerView\u item\u home);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
public void fetchArticlesNew(){
articleList=新的ArrayList();
API_服务API_服务=Client.getInstance().create(API_服务.class);
调用callArticle=api_service.fetchArticlesNew();
enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.code()==200){
articleList=response.body();
Adapter\u HomeArticles Adapter\u HomeArticles=新适配器\u HomeArticles(getC
Fragment fragment;
public void displayDefaultFragment() {
fragment = new Nav_Home();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).commit();
}
public void showProfileFragment() {
fragment = new Nav_Profile();
fragmentManager.beginTransaction().replace(R.id.navContent, fragment).addToBackStack(null).commit();
}
Fragment homeFragment;
Fragment profileFragment;
public void displayDefaultFragment() {
homeFragment = new Nav_Home();
fragmentManager.beginTransaction().replace(R.id.navContent, homeFragment).commit();
}
public void showProfileFragment() {
profileFragment = new Nav_Profile();
fragmentManager.beginTransaction().replace(R.id.navContent, profileFragment).addToBackStack(null).commit();
}