Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 禁用BrowseFragment中的标题_Java_Android_Android Fragments_Android Tv_Leanback - Fatal编程技术网

Java 禁用BrowseFragment中的标题

Java 禁用BrowseFragment中的标题,java,android,android-fragments,android-tv,leanback,Java,Android,Android Fragments,Android Tv,Leanback,我需要禁用BrowseFragment中的标题,并将其添加到ArrayObjectAdapter卡中。当我执行setHeaderState(HEADERS\u DISABLED)应用程序崩溃时。如果稍后运行setHeadersState(HEADERS\u DISABLED)方法,例如在onLoadFinished中,应用程序不会崩溃,但标题栏会立即可见然后隐藏,而不是每次适配器中显示项目时 MainFragment.class public class MainFragment extend

我需要禁用BrowseFragment中的标题,并将其添加到ArrayObjectAdapter卡中。当我执行
setHeaderState(HEADERS\u DISABLED)
应用程序崩溃时。如果稍后运行
setHeadersState(HEADERS\u DISABLED)
方法,例如在
onLoadFinished
中,应用程序不会崩溃,但标题栏会立即可见然后隐藏,而不是每次适配器中显示项目时

MainFragment.class

 public class MainFragment extends BrowseFragment implements LoaderManager.LoaderCallbacks<List<Module>> {
        private static final int MODULES_LOADER_ID = 100;
        private ArrayObjectAdapter mRowsAdapter;
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            setupUIElements();
            setupRowAdapter();
            setupListeners();
            getLoaderManager().initLoader(MODULES_LOADER_ID, null, this);
        }
            private void setupUIElements() {
            setTitle(getActivity().getString(R.string.app_name));
            setBadgeDrawable(getResources().getDrawable(R.drawable.title, getActivity().getTheme()));
            setHeadersTransitionOnBackEnabled(false);
            setBrandColor(getActivity().getResources().getColor(R.color.fastlane_background));
            setHeadersState(HEADERS_DISABLED);
        }
            private void setupRowAdapter() {
            mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
            setAdapter(mRowsAdapter);
        }
            private void setupListeners() {
            setOnItemViewSelectedListener(new ItemViewSelectedListener());
            setOnItemViewClickedListener(new ItemViewClickedListener());
        }
            private void loadModules(List<Module> modules) {
            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new ModulesCardPresenter());
            for (Module module : modules) {
                listRowAdapter.add(module);
            }
            HeaderItem header = new HeaderItem(0, "Меню");
            mRowsAdapter.add(new ListRow(header, listRowAdapter));
        }
        @Override
        public Loader<List<Module>> onCreateLoader(int id, Bundle args) {
            switch (id) {
                case MODULES_LOADER_ID:
                    return new ModulesLoader(getActivity());
                default:
                    return null;
            }
        }
        @Override
        public void onLoadFinished(Loader<List<Module>> loader, List<Module> data) {
            switch (loader.getId()) {
                case MODULES_LOADER_ID:
                    loadModules(data);
                    break;
            }
        }
        @Override
        public void onLoaderReset(Loader<List<Module>> loader) {
        }
        static class ModulesLoader extends SimpleAsyncTaskLoader<List<Module>> {
            public ModulesLoader(Context context) {
                super(context);
            }
            @Override
            public List<Module> loadInBackground() {
                Call<Modules> mCall = ServiceHolder.getService()
                        .getModules(Constants.GET_MODULES_REQUEST);
                try {
                    return mCall.execute().body().getModules();
                } catch (Exception e) {
                    e.printStackTrace();
                    return Collections.EMPTY_LIST;
                }
            }
        }
        private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
            @Override
            public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
                                       RowPresenter.ViewHolder rowViewHolder, Row row) {
            }
        }
        private final class ItemViewClickedListener implements OnItemViewClickedListener {
            @Override
            public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
                                      RowPresenter.ViewHolder rowViewHolder, Row row) {
                }
        }

在我的片段
onCreate()
方法中有
setHeaderState(HEADERS\u DISABLED)
。看起来您在
onActivityCreated()
中有了自己的。你应该试着移动它。让我知道这是否有效

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHeadersState(HEADERS_DISABLED)
}

也许对你有用

如前所述,存在一个缺陷。然后是一个官方回复,该问题将在12月左右得到解决。

我将
setHeadersState(HEADERS\u DISABLED)
移动到
onCreate()
,但没有任何变化。启动时应用程序崩溃,出现相同错误
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法android.view.view android.app.Fragment.getView()
是否确定是您的
setHeaderState()
导致崩溃?我建议评论除该行之外的所有内容(包括加载程序),看看它是否仍然崩溃。我有一个片段,在
onCreate
中调用了
setHeaders
,但是没有看到崩溃。我试图在
onCreate()
中只保留方法
setHeadersState(HEADERS\u DISABLED)
,问题仍然存在。稍后(即在
onLoadFinished
中)我将方法的执行转移到setHeadersState(HEADERS\u DISABLED)——效果非常好!您当前使用的Leanback版本是什么?我将片段放在activity_main.xml中,而不是事务片段。没有什么变化。同样的错误,谢谢。不幸的是,只有一个问题,但没有解决方案:(
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHeadersState(HEADERS_DISABLED)
}