2016-03-25 4 views
0

からビューを削除中にエラーが発生しました私は、次の操作を行います。フラグメント:私の断片で<code>onCreateView</code>方法を親

if (view != null) { 
       // Remove the view from the parent 
       ((ViewGroup) view.getParent()).removeView(view); 
       // Return it 
       return view; 
    }else{ 
     view = inflater.inflate(R.layout.base_activity, container, false); 
    } 

これは私がAPIレベル21に対する私のアプリをビルドする際に完全に正常に動作しますが、私はAPIに対する私のアプリをビルドするときレベル23私は次のエラーに遭遇します:

STACK_TRACE=java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.removeView(android.view.View)' on a null object reference 
at com.xyz.abc.core.ui.ServerErrorOverviewFragment.onCreateView(ServerErrorOverviewFragment.java:65) 
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 
at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:958) 
at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1666) 
at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:586) 
at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:169) 
at android.app.Activity.onKeyUp(Activity.java:2576) 
at android.view.KeyEvent.dispatch(KeyEvent.java:3171) 
at android.app.Activity.dispatchKeyEvent(Activity.java:2831) 
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50) 
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:224) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2429) 
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4584) 
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4539) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4070) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4123) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4089) 
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4203) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4097) 
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4260) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4070) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4123) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4089) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4097) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4070) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4123) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4089) 
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4236) 
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4423) 
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2480) 
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2074) 
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2065) 
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2457) 
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) 
at android.os.MessageQueue.nativePollOnce(Native Method) 
at android.os.MessageQueue.next(MessageQueue.java:143) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:5942) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 

私はここで何かを逃していますか? http://developer.android.com/guide/components/fragments.html

public static class ExampleFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.example_fragment, container, false); 
    } 
} 

から

答えて

1

サンプルあなたは、私は、Googleのガイドラインはそれを言及しているだろうと思ってやっていることを行う必要性があった場合。いずれの場合においても

ビューは、その後、あなたはそれが次のようになりanything.So行う必要はありませんnullでない場合:

if (view == null) { 
    view = inflater.inflate(R.layout.base_activity, container, false); 
} 
return view; 

また、ビューがnullでないという事実は、ということを意味するものではありません。ビューには親があります。 view.getParent()がnullであるため、nullポインタ例外がスローされます。あなたはチェックする必要があります

if(view.getParent()!=null){ 
    ......... 
} 
+0

このコードは、APIレベル21とうまく機能し、フラグメントが毎回再作成されないようにするためです。 –

+0

答えが更新されました。 – Anonymous

+0

しかし、APIレベル23で親がnullになるのはなぜですか? –

関連する問題