2016-10-01 3 views
0

フラグメントを起動すると、メインクラスのビューが表示されますので、プログラム全体でボタンが表示されます。この問題の最も単純な解決策は何かと思います。私は2つのボタンのためのフラグメントを作成し、その後、ボタンを含むフラグメントから別のフラグメントを起動する必要がありますか?フラグメントが表示されている間、メインクラスからビューを隠す方法はありますか?すべてのヒントは非常に高く評価されています。私はしばらくの間、解決策を探してきました。MainActivityはまだフラグメントで表示されています

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Arrays.sort(lContacts,Contact.ContactNameComparator); 

    for(int i = 0; i< lContacts.length;i++){ 
     mLnames[i] = lContacts[i].getLname(); 

    } 
    mQuoteArray = getResources().getStringArray(R.array.Quotes); 

    setContentView(R.layout.activity_main); 

    btnnames = (Button) findViewById(R.id.btnlaunch); 
    btndepartments = (Button) findViewById(R.id.btndepartments); 
    btnnames.setOnClickListener(myhandler1); 
    btndepartments.setOnClickListener(myhandler2); 

    mTitleFrameLayout = (FrameLayout) findViewById(R.id.title_fragment_container); 
    mQuotesFrameLayout = (FrameLayout) findViewById(R.id.quote_fragment_container); 


    mFragmentManager = getFragmentManager(); 
    fragmentTransaction = mFragmentManager 
      .beginTransaction(); 

    mFragmentManager 
      .addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { 
       public void onBackStackChanged() { 
        setLayout(); 
       } 
      }); 

} 

View.OnClickListener myhandler1 = new View.OnClickListener() { 
    public void onClick(View v) { 
     mFragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = mFragmentManager 
       .beginTransaction(); 
     fragmentTransaction.add(R.id.title_fragment_container, 
       new TitlesFragment()); 
     fragmentTransaction.commit(); 


    } 

}; 

View.OnClickListener myhandler2 = new View.OnClickListener() { 
    public void onClick(View v) { 

    } 

}; 

private void setLayout() { 
    if (!mQuoteFragment.isAdded()) { 
     mTitleFrameLayout.setLayoutParams(new LinearLayout.LayoutParams(
       MATCH_PARENT, MATCH_PARENT)); // width, height 
     mQuotesFrameLayout.setLayoutParams(new LinearLayout.LayoutParams(0, 
       MATCH_PARENT)); 
    } else { 
     mTitleFrameLayout.setLayoutParams(new LinearLayout.LayoutParams(0, 
       MATCH_PARENT, 1f)); // width, height, weight 
     mQuotesFrameLayout.setLayoutParams(new LinearLayout.LayoutParams(0, 
       MATCH_PARENT, 2f)); 
    } 
} 



@Override 
public void onListSelection(int index) { 
    if (!mQuoteFragment.isAdded()) { 
     FragmentTransaction fragmentTransaction = mFragmentManager 
       .beginTransaction(); 
     fragmentTransaction.add(R.id.quote_fragment_container, 
       mQuoteFragment); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.commit(); 
     mFragmentManager.executePendingTransactions(); 
    } 
    if (mQuoteFragment.getShownIndex() != index) { 
     mQuoteFragment.showIndex(index); 
    } 
} 

答えて

0

ビューを追加したい場合は、フラグメンテーションを使用し、それに付随するアクションをアクティビティに追加する必要があります。それで、私はあなたがアクティビティビューを隠すことはできないと思うし、少なくとも私はそれが良いプログラミングの練習ではないとは思わない。 1:

  1. あなたが別の活動に今

  2. を持つフラグメントが空であると二つの断片を持っている活動(メインクラス)ビューを作成してください:だから、あなたがこの問題を解決することができる2つのソリューションがありますあなたが現在持っているものと、アクティビティのビューとそのリスナとアクションを含む別のものです。このようにして、他のフラグメントに切り替える場合は、メイン・クラス・ビュー・フラグメントを非表示にするだけです。

私はそれが合理的であることを望みます。

+0

私はMainactivityの2つのボタンを残してしまい、フラグメントのためのブランクアクティビティを作成しました。提案していただきありがとうございます! – user3264060

関連する問題