2017-04-19 14 views
0

通知バーから通知を開いた後、人工バックスタックを作成しようとしています。通知を開いた後フラグメント人工バックスタンプ

ワークフロー:

  1. MainActivityが発射される開きます通知テントをクリックした後。
  2. MainActivityを開いた後、if(getArguments != null)をチェックします。 nullでない場合は、通知フラグメントを開き、通知IDを渡します。
  3. 通知の場合if(id != -1)通知フラグメントを開きます。

問題は、戻るボタンをクリックした後、MainActivityウィンドウに直進してNotificationsフラグメントをスキップすることです。私はそのような通知フラグメント開く

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 
NotificationFragment notificationFragment = new NotificationFragment(); 
Bundle bundle = new Bundle(); 
bundle.putInt("id", getArguments().getInt("id")); 
notificationFragment.setArguments(bundle); 
ft.add(R.id.container, notificationFragment).addToBackStack(null).commit(); 

R.id.container断片を示すSORでframeLayoutを使用している:

Fragment frag = new NotificationFragment(); 
frag.setArguments(bundle); 
FragmentTransaction ft =getSupportFragmentManager().beginTransaction(); 
ft.add(R.id.container, NotificationsFragment.getInstance(null, id)).commit(); 

を私はこのような通知フラグメントが開きます。 私はサポートlibrraryを使用しています。

FragmentTransaction.replace()は、既存のフラグメントをすべて削除し、新しいフラグメントを追加します。そしてFragmentTransaction.add()はそれらを活動状態に加えます。

私が間違っていることを誰かに教えてください。正しい方法を教えてください。

 Fragment frag = new NotificationFragment(); 
frag.setArguments(bundle); 
FragmentTransaction ft =getSupportFragmentManager().beginTransaction(); 
ft.add(R.id.container, NotificationsFragment.getInstance(null, id)).addToBackStack(null).commit(); 

答えて

2

変更この

 Fragment frag = new NotificationFragment(); 
frag.setArguments(bundle); 
FragmentTransaction ft =getSupportFragmentManager().beginTransaction(); 
ft.add(R.id.container, NotificationsFragment.getInstance(null, id)).commit(); 

基本的に、あなたが戻ってクリックすると、MainActivityが立ち上がっ理由です、backstackする通知フラグメントを追加していません。

+0

私はこのような小さな事をどのように逃したのか知っています。ありがとう。私はこの質問を削除する必要があるかどうかわからないし、 –

+0

質問を削除したい場合はうまくいきます。そうでなければ答えを受け入れてください。 –

関連する問題