From 208071f50f93cd4968161c3ecfbb505f71c63934 Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Wed, 25 Jun 2014 12:09:11 -0700 Subject: Fix NPE when referencing child fragments Child fragments are now added to the parent fragment's fragment manager due to a change in framework behavior (ag/489316). As a result we now need to use the child fragment manager to obtain references to child fragments. Bug: 15872707 Change-Id: I351cfbee780129448c1a748716a3c4895fca67e7 --- .../src/com/android/incallui/InCallActivity.java | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'InCallUI') diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java index 8c7cc649b..4e6bc5009 100644 --- a/InCallUI/src/com/android/incallui/InCallActivity.java +++ b/InCallUI/src/com/android/incallui/InCallActivity.java @@ -18,6 +18,7 @@ package com.android.incallui; import android.app.Activity; import android.app.AlertDialog; +import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; @@ -54,6 +55,8 @@ public class InCallActivity extends Activity { private AnswerFragment mAnswerFragment; private DialpadFragment mDialpadFragment; private ConferenceManagerFragment mConferenceManagerFragment; + private FragmentManager mChildFragmentManager; + private boolean mIsForegroundActivity; private AlertDialog mDialog; @@ -403,26 +406,28 @@ public class InCallActivity extends Activity { } private void initializeInCall() { - if (mCallButtonFragment == null) { - mCallButtonFragment = (CallButtonFragment) getFragmentManager() - .findFragmentById(R.id.callButtonFragment); - mCallButtonFragment.getView().setVisibility(View.INVISIBLE); - } - if (mCallCardFragment == null) { mCallCardFragment = (CallCardFragment) getFragmentManager() .findFragmentById(R.id.callCardFragment); } + mChildFragmentManager = mCallCardFragment.getChildFragmentManager(); + + if (mCallButtonFragment == null) { + mCallButtonFragment = (CallButtonFragment) mChildFragmentManager + .findFragmentById(R.id.callButtonFragment); + mCallButtonFragment.getView().setVisibility(View.INVISIBLE); + } + if (mAnswerFragment == null) { - mAnswerFragment = (AnswerFragment) getFragmentManager() + mAnswerFragment = (AnswerFragment) mChildFragmentManager .findFragmentById(R.id.answerFragment); } if (mDialpadFragment == null) { - mDialpadFragment = (DialpadFragment) getFragmentManager() + mDialpadFragment = (DialpadFragment) mChildFragmentManager .findFragmentById(R.id.dialpadFragment); - getFragmentManager().beginTransaction().hide(mDialpadFragment).commit(); + mChildFragmentManager.beginTransaction().hide(mDialpadFragment).commit(); } if (mConferenceManagerFragment == null) { @@ -432,12 +437,6 @@ public class InCallActivity extends Activity { } } - private void toast(String text) { - final Toast toast = Toast.makeText(this, text, Toast.LENGTH_SHORT); - - toast.show(); - } - /** * Simulates a user click to hide the dialpad. This will update the UI to show the call card, * update the checked state of the dialpad button, and update the proximity sensor state. @@ -455,7 +454,7 @@ public class InCallActivity extends Activity { } private void showDialpad(boolean showDialpad) { - final FragmentTransaction ft = getFragmentManager().beginTransaction(); + final FragmentTransaction ft = mChildFragmentManager.beginTransaction(); if (showDialpad) { ft.show(mDialpadFragment); } else { -- cgit v1.2.3