2016-08-05 4 views
0

AppCompatActivity의 xml에 정적 v4.app.Fragment가 있고 앱을 시작할 때 모든 것이 표시되지만 다른 활동 및 컴백을 입력하거나 다른 앱으로 전환하고 다시 전환하면 해당 프래그먼트 조각의 Log.d는 조각이 어딘가에 있음을 보여줍니다. 또한 프로그램 조각을 추가 getsupportfragmentmanager.add.commit를 사용하여 시도했으며,이 같은 결과가조각이 보이지 않음

activity_main.xml ...

<FrameLayout 
    android:id="@+id/content_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <fragment 
     android:id="@+id/fragment" 
     android:name="xxx.xxx.xxx.Fragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</FrameLayout> 

<android.support.design.widget.FloatingActionButton 
... 

MainActivity.java

@BindView(R.id.toolbar) Toolbar toolbar; 
@BindView(R.id.fab) FloatingActionButton fab; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(MainActivity.this); 
... 
No onResume, onCreateView, etc 

XFragment.java

public class XFragment extends Fragment { 

@BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout swipeRefreshLayout; 
@BindView(R.id.recyclerView) RecyclerView recyclerView; 
// and a lot of other variables 

public XFragment() { 

} 

public static XFragment newInstance(boolean isSearch) { 
    XFragment xFragment = new XFragment(); 
    return xFragment; 
} 

@Override 
public void onResume() { 
    Log.d(TAG, "onResume"); 
    super.onResume(); 
    //initiate variables 
    inflateRecyclerView(); 
    //etc 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "onCreate"); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    Log.d(TAG, "onCreateView"); 
    View view = inflater.inflate(R.layout.fragment_x, container, false); 
    ButterKnife.bind(this, view); 
    return view; 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    Parcelable parcelable = llm.onSaveInstanceState(); 
    outState.putParcelable("LM", parcelable); 
} 

@Override 
public void onViewStateRestored(@Nullable Bundle savedInstanceState) { 
    Log.d(TAG, "onViewStateRestored"); 
    super.onViewStateRestored(savedInstanceState); 
    if (savedInstanceState != null) { 
     llm = savedInstanceState.onRestoreInstanceState(savedInstanceState.getParcelable("LM")); 
    } 
} 

public void inflateRecyclerView() { 
    //use retrofit to call api 
} 

P.S : 나는 동적으로 추가 할 때, 나는 숨기기 findViewById를이 활동에, 다음

XFragment f = new XFragment.newInstance(); 
getSupportFragmentManager().beginTransaction() 
       .add(R.id.fragment_container, f).commit(); 
+0

일부 Java 코드를 게시 할 수 있습니까? – AbhayBohra

+0

@SlowLearner java 코드가 추가되었습니다. thx –

+0

조각을 active_main.xml에 정적으로 추가합니다. 왜 조각 관리자를 호출 할 필요가 없습니까? (https://developer.android.com/training/basics/fragments/creating.html에 따라) –

답변

0

미안 사용, 나는 문제의 원인이 무엇인지 알고있다. 라이브러리 호출 DynamicBox를 사용하고 있으며 문제를 일으키는 것 같습니다. 내가 잘못했거나 아직 그 라이브러리에 버그가 있는지 나는 모른다. 예 ...