亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么點擊按鈕,TextView里面的文字沒有發生變化呢?

看log,可以看到正常切換fragment。為什么文字沒有改變?

這是MainActivity3的代碼:

public?class?MainActivity3?extends?Activity?{

????private?Button?button;
????private?boolean?flag?=?true;

????@Override
????protected?void?onCreate(Bundle?savedInstanceState)?{
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.main3);
????????/**
?????????*?設置fragment3顯示在layout3中
?????????*/
????????getFragmentManager().beginTransaction().add(R.id.layout3,?new?MyFragment3()).commit();
????????button?=?(Button)?findViewById(R.id.cast);
????????/**
?????????*?設置點擊事件:如果當前顯示的是fragment3,則切換到fragment4;
?????????*?????????????如果當前顯示的是fragment4,則切換回fragment3
?????????*/
????????button.setOnClickListener(new?View.OnClickListener()?{
????????????@Override
????????????public?void?onClick(View?v)?{
????????????????FragmentTransaction?transaction?=?getFragmentManager().beginTransaction();
????????????????MyFragment3?myFragment3?=?new?MyFragment3();
????????????????MyFragment4?myFragment4?=?new?MyFragment4();
????????????????if?(flag)?{
????????????????????transaction.add(R.id.layout3,?myFragment4);
????????????????????flag?=?false;
????????????????}?else?{
????????????????????transaction.add(R.id.layout3,?myFragment3);
????????????????????flag?=?true;
????????????????}
????????????????transaction.commit();
????????????}
????????});
????}

}

這是MyFragment3的onCreateView方法:

@Override
public?View?onCreateView(LayoutInflater?inflater,?ViewGroup?container,?Bundle?savedInstanceState)?{
????Log.i("Main",?"[3]onCreateView()?---->>>?fragment所包含的所有view組件創建完成");
????View?view?=?inflater.inflate(R.layout.fragment2,?container,?false);
????TextView?textView?=?(TextView)?view.findViewById(R.id.text2);
????textView.setText("第一個fragment");
????return?view;
}

這是MyFragment4的onCreateView方法:

@Override
public?View?onCreateView(LayoutInflater?inflater,?ViewGroup?container,?Bundle?savedInstanceState)?{
????Log.i("Main",?"[4]onCreateView()?---->>>?fragment所包含的所有view組件創建完成");
????View?view?=?inflater.inflate(R.layout.fragment2,?container,?false);
????TextView?textView?=?(TextView)?view.findViewById(R.id.text2);
????textView.setText("第二個fragment");
????return?view;
}

這是main3.xml:

http://img1.sycdn.imooc.com//578f43c90001e47807010367.jpg

這是fragment2.xml

http://img1.sycdn.imooc.com//578f43bb0001171007000315.jpg

正在回答

2 回答

if?(flag)?{
????????????????????transaction.replace(R.id.layout3,?myFragment4);
????????????????????flag?=?false;
????????????????}?else?{
????????????????????transaction.replace(R.id.layout3,?myFragment3);
????????????????????flag?=?true;
????????????????}


0 回復 有任何疑惑可以回復我~

好了,已經找到問題所在了。原來是transaction調用錯了方法。應該調用replac方法,而我調用了add方法,導致兩個fragment同時顯示在屏幕上了。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android攻城獅的第二門課(第1季)
  • 參與學習       111145    人
  • 解答問題       1560    個

本課程由淺入深地帶您學會Android的常用控件的開發和使用

進入課程

為什么點擊按鈕,TextView里面的文字沒有發生變化呢?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號