私はhereのようなフラグメントの実装を持っています。私は、ナビゲーションアイコンonClickListenerを処理するためにBaseFragmentクラスを拡張しました。私はツールバーアイコンや色を変更するには、コードのこのブロックを使用していますバックプレスでアクティビティにアタッチされていないフラグメント
private void onBackButtonPressed(int tag)
{
switch (tag)
{
case Global.DISPLAY_STORE:
{
setTitle("Loyalty Cards",Color.BLACK);
setToolBar(getResources().getColor(R.color.white), Global.ADD_CARD,R.drawable.add_round_btn);
break;
}
case Global.ADD_CARD:
{
setTitle("Wallet", Color.WHITE);
setToolBar(getResources().getColor(R.color.colorPrimary), Global.DISPLAY_STORE,R.drawable.icon_shopping);
getFragmentManager().popBackStack();
break;
}
case Global.CARD_DETAILS:
{
setTitle("Loyalty Cards",Color.BLACK);
setToolBar(getResources().getColor(R.color.white), Global.ADD_CARD,R.drawable.add_round_btn);
getFragmentManager().popBackStack();
break;
}
}
}
バックボタンがpressed.ThisコードがBaseFragmentに常駐しているとき、そのためのコードは、次のようになります。ここで
は、私は、私はこのコードを持っているBaseFragmentのonCreate内で今BaseFragment
public class CardDetailsFragment extends BaseFragment
を拡張し、私のフラグメントを持って、
を押して戻って処理するコードを実装する方法です
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainActivity = (MainActivity) getActivity();
ImageButton righBarButton = (ImageButton) mainActivity.getToolbar().findViewById(R.id.btn_ToolBarRightBtn);
righBarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRighBarButtonClicked(Integer.parseInt(v.getTag().toString()));
}
});
mainActivity.getToolbar().setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackButtonPressed(BACK_BUTTON_TAG);
}
});
getFragmentManager().addOnBackStackChangedListener(this);
shouldDisplayHomeUp();
}
これにより、すべてのフラグメントバックボタンと、ツールバー内の右のバーボタンアイテムのクリックが処理されます。私はフラグメントAIオープンフラグメントBから3つの断片A、BおよびCの
を持っており、そして、断片C.今すぐフラグメントCIからのフラグメントBをバックボタンイベントをされて到達するために[戻る]ボタンをクリックしてシナリオを検討して
上記のコードで処理され、正常に動作します。フラグメントBから今
私は例外
java.lang.IllegalStateException: Fragment CardDetailsFragment{d8b35b5} not attached to Activity
at android.support.v4.app.Fragment.getResources(Fragment.java:636)
を取得しています戻るボタンをクリックしたときに、私はフラグメントA.に到達するために戻るボタンをクリックしてくださいしかし、ここでCardDetailsFragmentがFragmentCですが、私はをクリックしています フラグメントBからの戻るボタン
フラグメントは 'onBackButtonPressedを()'を呼び出すためにイベントを得ている方法は? –
pstを更新しました – Zach
フラグメントのインスタンスをバックスタックに格納し、バックプレスにロードしようとしました –