私は最後の数時間、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(以前はアクティビティだったので、その名前が付けられています)が含まれています。選択されたアイテム情報を示すフラグメントを持つListFragmentです(mDualPaneがtrueの場合は別のフラグメント、そうでない場合は別のアクティビティとして起動されます)。
私はこれを実行する方法を理解できません。onCreate、onCreateView、onActivityCreatedを使用して処理が順調に行われるのに疲れましたが、mToolsListFragmentではmToolsListFragmentがnullであるというエラーが発生します。 setContext(c);
この行を 'mToolListFragment =(ToolListFragment)getActivity()。getSupportFragmentManager()。findFragmentById(R.id.toolList);'以下の 'transaction.replace(...)'に移動します。 –