选择导航菜单项时不会替换上一个片段

     2023-04-18     244

关键词:

【中文标题】选择导航菜单项时不会替换上一个片段【英文标题】:Previous fragment is not being replaced when selecting a navigation menu item 【发布时间】:2021-11-16 19:27:23 【问题描述】:

我有一个导航抽屉活动,它根据从前一个活动作为主页片段传递的一些数据显示餐厅列表。单击其中一张餐厅卡片时,会创建另一个显示餐厅详细信息的片段。所有这些片段都将导航抽屉活动作为其父活动。当我在导航项上选择主片段菜单时,片段不会替换前一个片段,而是将自身叠加在前一个片段上。我会添加一些图片来解释这个场景。

这是我的导航抽屉 -

这是包含餐厅列表的主页片段 -

这是点击一家餐厅时显示餐厅详情的片段 -

当我从餐厅详情屏幕按下导航抽屉上的主页时,会发生这种情况 -

这里是相关代码- MainActivity2.class

package com.example.wfdmockapp;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.view.Menu;

import com.example.wfdmockapp.ui.home.HomeFragment;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;

import androidx.annotation.NonNull;
import androidx.core.view.GravityCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;


import com.example.wfdmockapp.databinding.ActivityMain2Binding;

public class MainActivity2 extends AppCompatActivity

    private static final String TAG = "MainActivity2";

    private String cityId = null;
    private String townId = null;

    private DrawerLayout drawer;

    private AppBarConfiguration mAppBarConfiguration;
    private ActivityMain2Binding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        binding = ActivityMain2Binding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        setSupportActionBar(binding.appBarMain.toolbar);
        binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            
        );

        drawer = binding.drawerLayout;
        NavigationView navigationView = binding.navView;
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home)
                .setOpenableLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);

        Intent getRestaurantIntent = getIntent();
        cityId = getRestaurantIntent.getStringExtra("cityId");
        townId = getRestaurantIntent.getStringExtra("townId");

        Bundle bundle = new Bundle();
        bundle.putString("cityId",cityId);
        bundle.putString("townId",townId);
        System.out.println(cityId+" "+townId);

        if (savedInstanceState == null) 
            getSupportFragmentManager().beginTransaction()
                    .setReorderingAllowed(true)
                    .replace(R.id.nav_host_fragment_content_main, HomeFragment.class, bundle)
                    .commit();

        
    

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_activity2, menu);
        return true;
    

    @Override
    public boolean onSupportNavigateUp() 
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    
```






HomeFragment.Java

public class HomeFragment extends Fragment 

    private static final String TAG = "HomeFragment";

    private RequestQueue mRequestQueue;

    private String cityId = null;
    private String townId = null;
    private String ShopListUrl= Global.base_url+"v1/get-shop-list";

    private ArrayList<Shop> shops = new ArrayList<>();

    private RecyclerView recyclerView;
    private ShopRecyclerViewAdapter adapter;

    private GifImageView loadingAnimation;

    @Override

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) 
        Bundle bundle = this.getArguments();
        if(bundle!=null)
            cityId = bundle.getString("cityId");
            townId = bundle.getString("townId");
            System.out.println(cityId+" "+townId);
        

        return inflater.inflate(R.layout.fragment_home, container, false);
    

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) 
        super.onViewCreated(view, savedInstanceState);

        mRequestQueue = Volley.newRequestQueue(getContext());

        loadingAnimation = view.findViewById(R.id.loading_animation);

        initRecyclerView(view);
        getShopList();
    

    public void getShopList()
        Log.d(TAG,"Creating Shop Object");
        JSONObject shopInfoObject = new JSONObject();

        try 
            shopInfoObject.put("city",cityId);
            shopInfoObject.put("town",townId);
            shopInfoObject.put("shop_type",null);
            shopInfoObject.put("api_token","a4e426652ed46154d67c8af897e77022");
         catch (JSONException e) 
            e.printStackTrace();
        

        Log.d(TAG,"JSON Shop Object created,collecting response for Request");
        JsonObjectRequest ShopListRequest = new JsonObjectRequest(Request.Method.POST, ShopListUrl, shopInfoObject, new Response.Listener<JSONObject>() 
            @Override
            public void onResponse(JSONObject response) 
                try 

                    Log.d(TAG,"Getting response");
                    JSONArray shopList = response.getJSONArray("shopList");

                    for(int i=0;i<shopList.length();i++)
                        JSONObject jsonObject = shopList.getJSONObject(i);

                        Shop shop = new Shop();
                        shop.setShopId(jsonObject.getString("shopId"));
                        shop.setName(jsonObject.getString("title"));
                        shop.setTypeName(jsonObject.getString("typeName"));
                        shop.setLogo(Global.base_imageUrl+jsonObject.getString("logo"));
                        shop.setSpecialOffer(jsonObject.getString("special_offer_text"));
                        shop.setDeliveredBy(jsonObject.getInt("deliveredBy"));
                        shop.setMixMatch(jsonObject.getInt("mixAndMatch"));
                        shop.setDeliveryFee(jsonObject.getString("delivery_fee"));
                        shop.setMinimumOrder(jsonObject.getString("minOrder"));
                        shop.setPaymentModeText(jsonObject.getString("paymentModeText"));
                        shop.setShopStatus(jsonObject.getString("currentStatus"));
                        shops.add(shop);
                    

                    adapter.notifyDataSetChanged();
                    Log.d(TAG,"Shop data fetched");

                    loadingAnimation.setVisibility(View.GONE);

                 catch (JSONException e) 
                    e.printStackTrace();
                
            
        , new Response.ErrorListener() 
            @Override
            public void onErrorResponse(VolleyError error) 
                if (error instanceof TimeoutError) 
                    Global.displayToast("Timeout! Please Try Again",getContext());
                
            
        );
        ShopListRequest.setRetryPolicy(new DefaultRetryPolicy(
                6000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        mRequestQueue.add(ShopListRequest);
    

    public void initRecyclerView(View view)
        recyclerView = view.findViewById(R.id.recycler_view);
        adapter = new ShopRecyclerViewAdapter(shops,getContext(),this);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    
```

RestaurantDetailsFragment.Java

package com.example.wfdmockapp;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.TimeoutError;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.bumptech.glide.Glide;
import com.example.wfdmockapp.models.Restaurant;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

import de.hdodenhof.circleimageview.CircleImageView;
import pl.droidsonroids.gif.GifImageView;

public class RestaurantDetailsFragment extends Fragment 

    private static final String TAG = "RestaurantDetails";

    private RequestQueue mRequestQueue;

    private Restaurant restaurant = new Restaurant();
    private String getShopDetailsUrl = Global.base_url+"v1/get-shop-details";
    private String shopId;
    private ArrayList<String> FoodTypeList;

    //UI Components
    private TextView name;
    private TextView typeName;
    private TextView shopMessage;
    private TextView minOrder;
    private TextView paymentModeText;
    private RecyclerView foodTypeListRecyclerView;
    private FoodTypeRecyclerViewAdapter adapter;
    private TextView deliveryText;
    private TextView deliveryFee;
    private TextView deliveryTime;
    private TextView shopStatus;
    private CircleImageView shopLogo;
    private LinearLayout shopDetailsView;
    private GifImageView loadingAnimation;


    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        shopId = getArguments().getString("shopId");
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_restaurant_details, container, false);
    

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) 
        super.onViewCreated(view, savedInstanceState);

        loadingAnimation = view.findViewById(R.id.shop_details_loading_animation);
        shopDetailsView = view.findViewById(R.id.shop_view);
        shopDetailsView.setVisibility(View.GONE);

        FoodTypeList = restaurant.getFoodTypeList();
        mRequestQueue = Volley.newRequestQueue(getContext());

        initRecyclerView(view);
        initUIComponents(view);
        showRestaurantDetails(view);
    

    public void showRestaurantDetails(View view)
        JSONObject ShopInfoObject = new JSONObject();

        try 
            ShopInfoObject.put("api_token","cadbc10d3aa13257cd7c69bb3d434d00");
            ShopInfoObject.put("shopId",shopId);

         catch (JSONException e) 
            e.printStackTrace();
        


        JsonObjectRequest getShopDetailsRequest = new JsonObjectRequest(Request.Method.POST, getShopDetailsUrl, ShopInfoObject, new Response.Listener<JSONObject>() 
            @Override
            public void onResponse(JSONObject response) 
                try 
                    JSONArray shopDetails = response.getJSONArray("shop");

                    String deliveryTextResponse = response.getString("deliveryText");
                    restaurant.setDeliveryText(deliveryTextResponse);

                    for(int i=0;i<shopDetails.length();i++)
                        JSONObject shopJsonObject = shopDetails.getJSONObject(i);

                        restaurant.setName(shopJsonObject.getString("title"));

                        restaurant.setTypeName(shopJsonObject.getString("typeName"));

                        restaurant.setShop_message(shopJsonObject.getString("shop_message"));

                        String ImageUrl = Global.base_imageUrl+shopJsonObject.getString("logo");
                        restaurant.setLogo(ImageUrl);

                        restaurant.setMinOrder(shopJsonObject.getString("minOrder"));

                        restaurant.setStatus(shopJsonObject.getString("currentStatus"));

                        JSONArray foodTypeListJSONArray = shopJsonObject.getJSONArray("foodTypeList");
                        for(int j=0;j<foodTypeListJSONArray.length();j++)
                            JSONObject foodTypeListJSONObject = foodTypeListJSONArray.getJSONObject(j);

                            Log.d(TAG,foodTypeListJSONObject.getString("foodTypeName"));
                            restaurant.addFoodListItems(foodTypeListJSONObject.getString("foodTypeName"));
                        

                        adapter.notifyDataSetChanged();

                        restaurant.setDelivery_fee(shopJsonObject.getString("delivery_fee"));

                        JSONObject deliveryHours = shopJsonObject.getJSONObject("deliveryHours");
                        String openingHours = deliveryHours.getString("openingHour");
                        String closingHours = deliveryHours.getString("closingHour");
                        restaurant.setDeliveryTime("Delivery: "+openingHours+" - "+closingHours);

                        restaurant.setPaymentModeText(shopJsonObject.getString("paymentModeText"));

                        setUIComponentValues(restaurant,view);

                        loadingAnimation.setVisibility(View.GONE);
                        shopDetailsView.setVisibility(View.VISIBLE);
                    

                 catch (JSONException e) 
                    e.printStackTrace();
                

            
        , new Response.ErrorListener() 
            @Override
            public void onErrorResponse(VolleyError error) 
                if (error instanceof TimeoutError) 
                    Global.displayToast("Timeout error!Please try again",getContext());
                
            
        );
        getShopDetailsRequest.setRetryPolicy(new DefaultRetryPolicy(
                5000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        mRequestQueue.add(getShopDetailsRequest);
    

    public void initUIComponents(View view)
        name = view.findViewById(R.id.shopName);
        typeName = view.findViewById(R.id.shopTypename);
        shopMessage = view.findViewById(R.id.shop_message);
        minOrder = view.findViewById(R.id.min_order);
        paymentModeText = view.findViewById(R.id.payment_Method);
        deliveryFee = view.findViewById(R.id.min_delivery_fee);
        deliveryText = view.findViewById(R.id.delivery_time_today);
        deliveryTime = view.findViewById(R.id.shop_delivery_time);
        shopLogo = view.findViewById(R.id.shopLogo);
        shopStatus = view.findViewById(R.id.status);
    

    public void setUIComponentValues(Restaurant restaurant,View view)
        Glide.with(getContext()).load(restaurant.getLogo()).into(shopLogo);
        name.setText(restaurant.getName());
        typeName.setText(restaurant.getTypeName());

        String message = restaurant.getShop_message();
        System.out.println(message);
        if(message.equals("")||message.equals("null"))
            Log.d(TAG,"No shop message,hiding field");
            LinearLayout shopMsgField = view.findViewById(R.id.shop_message_field);
            shopMsgField.setVisibility(View.GONE);
        else
            shopMessage.setText(message);
        


        minOrder.setText("\u20ac "+restaurant.getMinOrder()+" MIN ");
        paymentModeText.setText(restaurant.getPaymentModeText());
        deliveryFee.setText("Delivery \u20ac "+restaurant.getDelivery_fee());

        String text = restaurant.getDeliveryText();
        if(text.equals("null")||text.equals(""))
            deliveryText.setVisibility(View.GONE);
        else
            deliveryText.setText(text);
        

        deliveryTime.setText(restaurant.getDeliveryTime());
        Global.setCurrentStatusText(restaurant.getStatus(),shopStatus);

    

    public void initRecyclerView(View view)
        foodTypeListRecyclerView = view.findViewById(R.id.FoodTypeRecyclerView);
        adapter = new FoodTypeRecyclerViewAdapter(FoodTypeList,getContext());
        foodTypeListRecyclerView.setAdapter(adapter);
        foodTypeListRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    
```

ShopRecyclerViewAdapter.java

package com.example.wfdmockapp;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.example.wfdmockapp.models.Shop;

import java.io.FileNotFoundException;
import java.util.ArrayList;

public class ShopRecyclerViewAdapter extends RecyclerView.Adapter<ShopRecyclerViewAdapter.ViewHolder> 

    private static final String TAG="ShopRecyclerViewAdapter";

    private ArrayList<Shop> shops;
    private Context  mContext;
    private Fragment fragment;

    public ShopRecyclerViewAdapter(ArrayList<Shop> shops,Context mContext,Fragment fragment) 
        this.shops = shops;
        this.mContext = mContext;
        this.fragment = fragment;
    

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) 
        Log.d(TAG,"Reached onCreate");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.shoplistitem,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) 
        Log.d(TAG,"Reached onBind");
        try
            Glide.with(mContext).load(shops.get(position).getLogo()).into(holder.shopLogo);
        catch (Exception e)
            Glide.with(mContext).load(R.drawable.shop_logo_base).into(holder.shopLogo);
        

        holder.deliveryFee.setText("Delivery \u20ac "+shops.get(position).getDeliveryFee());
        holder.minOrder.setText("\u20ac "+shops.get(position).getMinimumOrder()+" MIN ");
        holder.paymentMethod.setText(shops.get(position).getPaymentModeText());

        String status = shops.get(position).getShopStatus();
        Global.setCurrentStatusText(status,holder.shopStatus);

        holder.shopName.setText(shops.get(position).getName());
        holder.shopTypeName.setText(shops.get(position).getTypeName());

        String offerText = shops.get(position).getSpecialOffer();
        if(!(offerText==null))
            holder.shopOffer.setText(offerText);
        else
            holder.offerSection.setVisibility(View.GONE);
        

        int deliveredBy = shops.get(position).getDeliveredBy();
        makeViewInvisible(holder.delivery_layout,deliveredBy);

        int mixAndMatch = shops.get(position).getMixMatch();
        makeViewInvisible(holder.mixMatchLayout,mixAndMatch);


        holder.parent_layout.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Bundle bundle = new Bundle();
                bundle.putString("shopId",shops.get(position).getShopId());

                FragmentManager fm = fragment.getActivity().getSupportFragmentManager();
                FragmentTransaction fragmentTrans = fm.beginTransaction();
                fragmentTrans.replace(R.id.nav_host_fragment_content_main,RestaurantDetailsFragment.class,bundle);
                fragmentTrans.setReorderingAllowed(true);
                fragmentTrans.addToBackStack(null);
                fragmentTrans.commit();
            
        );
    

    @Override
    public int getItemCount() 
        return shops.size();
    

    public class ViewHolder extends RecyclerView.ViewHolder 
            ImageView shopLogo;
            TextView shopName;
            TextView shopTypeName;
            TextView shopOffer;
            TextView minOrder;
            TextView deliveryFee;
            TextView paymentMethod;
            TextView shopStatus;
            RelativeLayout offerSection;
            RelativeLayout parent_layout;
            RelativeLayout delivery_layout;
            RelativeLayout mixMatchLayout;

        public ViewHolder(@NonNull View itemView) 
            super(itemView);
            shopLogo = itemView.findViewById(R.id.shop_logo);
            shopName = itemView.findViewById(R.id.shop_title);
            shopTypeName = itemView.findViewById(R.id.shop_typename);
            shopOffer = itemView.findViewById(R.id.offer_text);
            offerSection = itemView.findViewById(R.id.offer_section);
            minOrder = itemView.findViewById(R.id.shop_min_order);
            deliveryFee = itemView.findViewById(R.id.deliver_fee);
            shopStatus = itemView.findViewById(R.id.status);
            paymentMethod = itemView.findViewById(R.id.shop_payment);
            parent_layout = itemView.findViewById(R.id.parent_layout);
            delivery_layout = itemView.findViewById(R.id.delivered_by);
            mixMatchLayout = itemView.findViewById(R.id.mix_and_match);
        
    


    public void makeViewInvisible(View view,int flag)
        if(flag==1)
            view.setVisibility(View.GONE);
        
    

```

【问题讨论】:

【参考方案1】:

您需要在 onBackPressed 上弹出片段,因此需要从 MainActivity 执行函数。

MainActivity

public void popFragment() 
    if (getSupportFragmentManager() == null)
        return;
    getSupportFragmentManager().popBackStack();



@Override
public void onBackPressed() 
    if (getSupportFragmentManager().getBackStackEntryCount() > 1) 
        popFragment();
    

【讨论】:

当我从导航菜单中选择一个菜单项时,会调用 onBackPressed 吗?我做了更多的探索并意识到每当我在导航中选择主页项时,片段的布局都会叠加在任何其他片段上 你必须在按下 home 的同时弹出其他所有片段,而对于 back press 你只需弹出一次。【参考方案2】:

原来,问题出在 ShopRecyclerViewAdapter.java 文件中。

排队

FragmentManager fm = fragment.getActivity().getSupportFragmentManager

fragment.getActivity 使上下文为空。从视图中获取上下文反而解决了这个问题。

我将上面的行替换为以下内容:

FragmentManager fm = ((FragmentActivity) view.getContext()).getSupportFragmentManager()

这里是解决方案的参考:

Replace fragment from recycler adapter

【讨论】:

导航菜单和在android中的选择性片段上添加按钮

】导航菜单和在android中的选择性片段上添加按钮【英文标题】:Navigationmenuandaddbuttononselectivefragmentsinandroid【发布时间】:2020-05-0806:28:33【问题描述】:我需要你的帮助来理解android中菜单的概念。我在android中使用导航菜单(栏... 查看详情

关于侧边导航菜单和片段的一般设计问题

...一个,会发生一个片段事务,它将内容框架替换为与用户选择的内容相关的任何片段。我真正想 查看详情

选择子菜单时的活动导航项(无 js)

】选择子菜单时的活动导航项(无js)【英文标题】:Acitvenavigationitemwhenselectedsubmenu(nojs)【发布时间】:2020-10-2907:31:03【问题描述】:我正在寻找一种在选择子菜单项时突出显示导航项的方法。它必须在PHP中完成。菜单所在的位... 查看详情

WordPress 菜单:单击父菜单项时,仅显示该链接的子导航子项

】WordPress菜单:单击父菜单项时,仅显示该链接的子导航子项【英文标题】:WordPressMenu:Onclickofparentmenuitem,onlydisplaysubnavigationchildrenofthatlink【发布时间】:2018-10-1512:02:35【问题描述】:我的WordPress导航功能出现问题。我有以下从... 查看详情

导航抽屉不适用于导航组件

】导航抽屉不适用于导航组件【英文标题】:NavigationDrawerdon\'tworkwithnavigationComponent【发布时间】:2019-08-2204:21:03【问题描述】:当用户点击菜单项时,导航抽屉不会让用户到达目的地。导航抽屉显示正确,但不起作用。有什么... 查看详情

CSS下拉子菜单不会隐藏

...选项时,新的子菜单会替换另一个,但现在第一个子菜单选择停留在屏幕上,永远不会消失,当您转到另一个菜单选项时,另一个子菜单出现在第一个菜单下...有人可以帮我吗?谢谢你!html:<divid="menu"> 查看详情

duilib修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug(代码片段)

...combo控件,展开下拉菜单后,不会自动定位到上次选择的位置,而是定位到最开头的位置。    带有bug的效 查看详情

选择导航列表项时需要切换“活动”类

】选择导航列表项时需要切换“活动”类【英文标题】:Needstotoggle\'active\'classwhennavigationlistitemsareselected【发布时间】:2013-02-1209:10:45【问题描述】:我正在使用twitter引导程序并尝试在选择列表项时使用jquery将“活动”类设置为... 查看详情

替换的片段在背景上仍然可见

...片段替换为另一个片段。它似乎有效,但是当我从抽屉中选择另一个选项时,新片段已加载,但两个片段都是可见的。我没有使用静态片段布局,所以我不知道问题出在哪里。片段是通过在我的活动上实现AdapterView.OnItem 查看详情

用java做一个窗口

...文件菜单,文件菜单有“计数器”和“退出”菜单项。当选择计数器菜单项时,标签上值加1;当选择“退出”菜单项时,程序结束。java做窗口的话,需要用swing技术,之后创建JFrame等组件,即可完成窗口创建工作。packageinter.fram... 查看详情

Tailwind 和 Vue-Router - 单击菜单项时下拉菜单不会关闭

】Tailwind和Vue-Router-单击菜单项时下拉菜单不会关闭【英文标题】:Tailwind&Vue-Router-dropdownmenudoesn\'tclosewhenclickingonmenuitems【发布时间】:2020-12-0813:06:58【问题描述】:我在tailwind&vue-routerhttps://codepen.io/huphtur/pen/ordMeN中使用以... 查看详情

wpf中listbox连续选择同一项时selectionchanged事件不响应的问题(代码片段)

在使用ListBox的SelectionChanged事件时,当你连续选择同一项时该事件不会响应。就是当重复选中同一个Item时,SelectionChanged事件只是在第一次选中Item时触发,我们期望的是每次都能触发。这是因为这是一个SelectionChanged事... 查看详情

点击 NavigationBar 和 NavigationBar 项时 UIPopoverController 不会关闭

...【问题描述】:我是ios的新手。我有一个包含多个按钮的导航栏,包括一个后退按钮、排序、过滤器、设置 查看详情

EditText:禁用文本选择处理程序单击事件上的粘贴/替换菜单弹出

】EditText:禁用文本选择处理程序单击事件上的粘贴/替换菜单弹出【英文标题】:EditText:DisablePaste/Replacemenupop-uponTextSelectionHandlerclickevent【发布时间】:2015-03-0807:55:21【问题描述】:我的目标是拥有一个没有花哨功能的EditText,... 查看详情

EditText:禁用文本选择处理程序单击事件上的粘贴/替换菜单弹出

】EditText:禁用文本选择处理程序单击事件上的粘贴/替换菜单弹出【英文标题】:EditText:DisablePaste/Replacemenupop-uponTextSelectionHandlerclickevent【发布时间】:2015-03-0807:55:21【问题描述】:我的目标是拥有一个没有花哨功能的EditText,... 查看详情

在 UWP 中单击汉堡菜单项时如何提高应用程序性能?

...程序中为MVVM和汉堡菜单使用模板10。通常从一页到另一页导航需要2到3秒。当App在后台超过5小时,然后回到前台,页面导航需要8秒。如何减少页面到页面导航的延迟?菜单项 查看详情

Android - 导航抽屉 - 与动态菜单项重叠的片段

...添加城市名称作为菜单项,都指向HomeFragment。但是,当我选择一个城市名称,然后选择任何其他菜单选项时,两个片段会重叠,如下图所示。Fragmentsoverlap 查看详情

在导航控制器上添加片段而不是替换片段?

】在导航控制器上添加片段而不是替换片段?【英文标题】:Addfragmentonnavigationcontrollerinsteadofreplacefragment?【发布时间】:2019-10-0205:25:17【问题描述】:我正在使用导航控件(Android架构)。我使用了一些演示并创建了导航架构。... 查看详情