0

私はアプリケーションを持っています。その一部はカメラが写真を撮るフラグメントです。写真が撮られると、別のフラグメントがロードされて画像が表示されます。ユーザーは、満足できない場合は写真を撮り直すことができます。これは、前のフラグメント (カメラ) に戻る必要があり、オーバーレイが表示されるときに行われますが、以前に撮影された画像は引き続き表示されます。

EDIT* * デバッグしましたが、画像が撮影されて次のフラグメントが読み込まれると、onpause() が呼び出されないため、ユーザーが再撮影をクリックすると、カメラを再インスタンス化する onresume が呼び出されません。ここで同様の質問があったことは知っていますが、私の問題に対する答えが見つからないようです.* *EDIT

私はここで働いている他の誰かと統合していて、それが混乱を引き起こしていると言わなければなりません. 次のフラグメントに移動する方法と前のフラグメントに移動する方法の 2 つを次に示します。

public void gotoNextFragment(String nextTag, Fragment nextFragment){

    FragmentManager  fm = getSupportFragmentManager();

    FragmentTransaction ft = fm.beginTransaction();
    ft.setCustomAnimations(R.animator.enter_slide_in, R.animator.enter_slide_out);

    boolean newlyCreated = false;
    if(nextFragment == null){
        nextFragment = Fragment.instantiate(this, nextTag);
        newlyCreated = true;
    }

    //hide current fragment
    ft.hide(fm.findFragmentByTag(Misc.currentContentFragmentTag));

    if(newlyCreated){
        ft.add(R.id.content_frame, nextFragment, nextTag);
    }
    else{
        ft.show(nextFragment);
    }
    ft.addToBackStack(null);
    ft.commit();
    Misc.currentContentFragmentTag = nextTag;

}

public void gobackToPreviousFragment(String preFragmentTag,Fragment f){

    FragmentManager  fm = getSupportFragmentManager();

    FragmentTransaction ft = fm.beginTransaction();
    ft.setCustomAnimations(R.animator.close_slide_in,R.animator.close_slide_out);

    ft.show(f);
    ft.remove(fm.findFragmentByTag(Misc.currentContentFragmentTag));                    
    ft.addToBackStack(null);
    ft.commit();

    Misc.currentContentFragmentTag = preFragmentTag;

}

onResume() が確実に呼び出されるようにするために私が何をする必要があるかについて誰かが洞察を持っているなら、私はそれを感謝します...

EDIT まだ表示されている画像プレビューは、プレビュー用のフラグメントからではなく、標準のカメラ画像プレビューのものです

4

2 に答える 2

1

onResume() メソッドは、フラグメントが実行される前に常に呼び出されます。ライフサイクル図を確認してください --> http://docs.xamarin.com/static/guides/android/platform_features/fragments/part_1_-_creating_a_fragment/Images/fragment_lifecycle.png

于 2013-08-08T09:03:29.347 に答える