当我启动一个片段时,我的主要类中的视图仍然是可见的,因此按钮在整个程序中显示...我想知道这个问题最简单的解决方案是什么。我是否需要为两个按钮创建一个片段,然后从包含按钮的片段中启动另一个片段?有没有办法在显示片段时隐藏主类的视图?我非常感谢任何提示,我一直在寻找解决方案。
@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 :(得分:0)
我认为如果要将视图及其附带的操作添加到活动中,则应使用Fragment。所以我不认为你可以隐藏活动视图,或者至少我不认为这是一个很好的编程实践。因此,有两种解决方案可以解决这个问题:
将您现在拥有的片段制作成另一个活动
使活动(主类)视图为空并且有两个片段:您现在拥有的片段和另一个片段,其中包含活动视图及其侦听器和操作。这样,如果要切换到其他Fragment,只需要隐藏主类视图片段。
我希望这是有道理的。