2016-04-22 3 views
0

アクティビティをダイアログに書き直したいので、プログラムでダイアログを置き換えたいと思います。私は統計的にフラグメントを試して、それはうまく動作します。私はプログラム的にフラグメントを呼び出し、ブレークポイントでデバッグすると、そのライフサイクルがonCreate()から始まり、終了する理由を理解できません...なぜonCreate()からなぜ静的に呼び出すときのようにonAttach()からですか?ここに私のコードは、私plzを助ける! DietsFragmentとBaseActivityで動的に配置されたFragmentの何が問題ですか?

base_activity.xml `

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/base_drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 

     android:id="@+id/base_fragment_holder" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </FrameLayout> 

</android.support.v4.widget.DrawerLayout> 

`

BaseActivity.java

public class BaseActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.base_activity); 

     DietsFragment dietsFragment = new DietsFragment(); 
     FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.base_fragment_holder, dietsFragment); 
     fragmentTransaction.commit(); 

    } 
} 

DietsFragment.java

public class DietsFragment extends Fragment 
     implements AdapterView.OnItemClickListener, 
     View.OnClickListener { 
    public FragmentEventListener fragmentEventListener; 

    Cursor diets; 
    DietAdapter adapter; 
    DietHelper helper; 
    ListView listView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View view = inflater.inflate(R.layout.activity_diets, container, false); 

     listView = (ListView) view.findViewById(R.id.act_diets_lv_diets); 
     if (listView != null) { 
      listView.setOnItemClickListener(this); 
     } 

     FloatingActionButton floatingActionButton = (FloatingActionButton) view.findViewById(R.id.act_diets_fab); 
     if (floatingActionButton != null) 
      floatingActionButton.setOnClickListener(this); 
     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState){ 
     super.onActivityCreated(savedInstanceState); 

     setHelper(new DietHelper(getActivity())); 
     setDiets(getHelper().getAllTableRecordsCursor()); 
     setAdapter(new DietAdapter(getActivity(), getDiets())); 
     listView.setAdapter(getAdapter()); 
     fragmentEventListener = (FragmentEventListener) getActivity(); 
    } 

    public void setDiets (Cursor diets) { 
     this.diets = diets; 
    } 

    public void setAdapter (DietAdapter adapter) { 
     this.adapter = adapter; 
    } 

    public void setHelper (DietHelper helper) { 
     this.helper = helper; 
    } 

    public Cursor getDiets() { 
     return diets; 
    } 

    public DietAdapter getAdapter() { 
     return adapter; 
    } 

    public DietHelper getHelper() { 
     return helper; 
    } 
} 

私はそのを隠します私はBaseActivityで(RESIDをint型)findViewbyIdを過負荷にし、すべての私のことOnClickListener、OnItemClickListenerとFragmentEventListenerのimplementetions、私は

答えて

0

でXMLから静的BaseActivityにフラグメントを追加するときに、それが正常に動作します原因私はちょうど私のミスを見つけた... 問題、そして今私は自分自身に質問しているのですが、なぜそれをどうしたいのですか?

関連する問題