Android fragments 当你点击一个项目,你想分割城市,但他不工作

Android fragments 当你点击一个项目,你想分割城市,但他不工作,android-fragments,Android Fragments,单击某个项目时,我希望看到城市片段,但它不起作用。 它在导航菜单中起作用,但当您单击不起作用的项目时 public class CityFragment extends Fragment implements CityAdapter.OnOverViewClick { //Views private RelativeLayout rl; private RecyclerView mRecyclerView; private View mLoadingView;

单击某个项目时,我希望看到城市片段,但它不起作用。 它在导航菜单中起作用,但当您单击不起作用的项目时

public class CityFragment extends Fragment implements CityAdapter.OnOverViewClick {

    //Views
    private RelativeLayout rl;
    private RecyclerView mRecyclerView;
    private View mLoadingView;

    private String cityString;

    //List
    private CityAdapter multipleItemAdapter;

    private ViewTreeObserver.OnGlobalLayoutListener recyclerListener;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rl = (RelativeLayout) inflater.inflate(R.layout.fragment_entekhab_shahr, null);
        setHasOptionsMenu(true);
        mRecyclerView = (RecyclerView) rl.findViewById(R.id.rv_list);


        final StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(mLayoutManager);

        cityString = this.getArguments().getStringArray(MainActivity.FRAGMENT_DATA)[0];

        recyclerListener = new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                //Get the view width, and check if it could be valid
                int viewWidth = mRecyclerView.getMeasuredWidth();
                if (viewWidth <= 0) return;

                //Remove the VTO
                mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

                //Calculate and update the span
                float cardViewWidth = getResources().getDimension(R.dimen.card_width_overview);
                int newSpanCount = Math.max(1, (int) Math.floor(viewWidth / cardViewWidth));
                mLayoutManager.setSpanCount(newSpanCount);
                mLayoutManager.requestLayout();
            }
        };
        mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(recyclerListener);

        mLoadingView = rl.findViewById(R.id.loading_view);

        //Load items
        loadItems();

        return rl;
    }

    public void loadItems() {
        new CityParser(cityString, getActivity(), new CityParser.CallBack() {
            @Override
            public void categoriesLoaded(ArrayList < NavItem > result, boolean failed) {
                if (failed) {
                    //If it failed; show an error if we're using a local file, or if we are online & using a remote overview.
                    if (!cityString.contains("http") || Helper.isOnlineShowDialog(getActivity()))
                        Toast.makeText(getActivity(), R.string.invalid_configuration, Toast.LENGTH_LONG).show();
                    return;
                }

                //Add all the new posts to the list and notify the adapter
                multipleItemAdapter = new CityAdapter(result, getContext(), CityFragment.this);
                mRecyclerView.setAdapter(multipleItemAdapter);

                loadCompleted();
            }
        }).execute();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(recyclerListener);
    }

    private void loadCompleted() {
        //Hide the loading view if it isn't already hidden
        if (mLoadingView.getVisibility() == View.VISIBLE)
            mLoadingView.setVisibility(View.GONE);
    }

    @Override
    public void onOverViewSelected(NavItem item) {
        HolderActivity.startActivity(getActivity(), item.getFragment(), item.getData());
    }
}
公共类CityFragment扩展片段实现CityAdapter.onOverview单击{
//观点
私人亲戚;
私人回收视图mRecyclerView;
私有视图mLoadingView;
私有字符串cityString;
//名单
私人城市适配器多路适配器;
private ViewTreeObserver.OnGlobalLayoutListener recyclerListener;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
rl=(RelativeLayout)充气器。充气(R.layout.fragment\u entekhab\u shahr,null);
设置选项菜单(真);
mRecyclerView=(RecyclerView)rl.findViewById(R.id.rv_列表);
最终StaggedGridLayoutManager mLayoutManager=新的StaggedGridLayoutManager(1,StaggedGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mllayoutmanager);
cityString=this.getArguments().getStringArray(MainActivity.FRAGMENT_数据)[0];
recyclerListener=new ViewTreeObserver.OnGlobalLayoutListener(){
@凌驾
公共图书馆{
//获取视图宽度,并检查它是否有效
int viewWidth=mRecyclerView.getMeasuredWidth();
if(viewWidth结果,布尔值失败){
如果(失败){
//如果失败;如果我们正在使用本地文件,或者如果我们在线&使用远程概览,则显示错误。
如果(!cityString.contains(“http”)| | Helper.isOnlineShowDialog(getActivity()))
Toast.makeText(getActivity(),R.string.invalid_配置,Toast.LENGTH_LONG.show();
返回;
}
//将所有新帖子添加到列表中并通知适配器
multipleItemAdapter=new CityAdapter(结果,getContext(),CityFragment.this);
mRecyclerView.setAdapter(multipleItemAdapter);
loadCompleted();
}
}).execute();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(recyclerListener);
}
私有void loadCompleted(){
//如果加载视图尚未隐藏,则隐藏该视图
if(mLoadingView.getVisibility()==View.VISIBLE)
mLoadingView.setVisibility(View.GONE);
}
@凌驾
已选择概述上的公共无效项(NaviItem项){
HolderActivity.startActivity(getActivity(),item.getFragment(),item.getData());
}
}

这是我的活动@Override public boolean onOptionsItemSelected(MenuItem item){//Handle item选择开关(item.getItemId()){case R.id.favorites:HolderActivity.startActivity(THIS,CityFragment.class,null);返回true;case R.id.profile:HolderActivity.startActivity(this,profile_Fragment.class,null);返回true;默认值:返回super.onoptionItemSelected(item);}欢迎来到stackoverflow,请将此信息添加到您的问题中。我想补充的是,我处理了每个错误