Я пытался в течение последних нескольких часов искать вокруг SO, но я не мог найти решение за пределами попытки создать обходное решение. Я пытаюсь создать ящик для навигации для своего приложения, но для этого мне пришлось в конечном итоге попытаться изменить свою базовую активность на фрагмент. Это результат:Как я могу сложить фрагменты с помощью навигационного ящика?
public class ToolReaderActivity extends Fragment implements ToolListFragment.OnToolSelectedListener, CompatActionBarNavListener, OnClickListener {
boolean mIsDualPane = false;
Context c;
ToolListFragment mToolListFragment;
InfoFragment mInfoFragment;
Fragment mContent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
c = getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.onepane_with_bar, container, false);
// find our fragments
mToolListFragment = (ToolListFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.toolList);
mInfoFragment = (InfoFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.toolInfo);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.toolList, mToolListFragment).commit();
FragmentTransaction transaction2 = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.toolInfo, mInfoFragment).commit();
mToolListFragment.setContext(c);
mToolListFragment.setOnToolSelectedListener(this);
View infoView = getView().findViewById(R.id.toolInfo);
mIsDualPane = infoView != null && infoView.getVisibility() == View.VISIBLE;
int catIndex = savedInstanceState == null ? 0 : savedInstanceState.getInt("catIndex", 0);
setUpActionBar(mIsDualPane, catIndex);
mToolListFragment.setSelectable(mIsDualPane);
restoreSelection(savedInstanceState);
if (savedInstanceState != null) {
//Restore the fragment's instance
mContent = getActivity().getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
}
return rootView;
}
...
...
...
}
Предполагаемый выход - это деятельность с ящиком навигации и, следовательно, фрагментом. Фрагмент содержит это основное действие ToolReaderActivity (названное так потому, что оно ранее было активным), в котором есть 1-2 фрагмента внутри. Это ListFragment с фрагментом, отображающим информацию о выбранных элементах (в качестве другого фрагмента, если mDualPane истинна или запущена в качестве отдельной операции в противном случае).
Я не могу найти способ заставить это работать, я устал изменять порядок выполнения вещей с помощью onCreate, onCreateView, onActivityCreated, но ошибка, которую я продолжаю получать, заключается в том, что mToolsListFragment имеет значение null в mToolsListFragment. SetContext (с);
Переместить эту строку 'mToolListFragment = (ToolListFragment) getActivity(). GetSupportFragmentManager(). FindFragmentById (R.id.toolList);' ниже 'transaction.replace (...)' –