为了账号安全,请及时绑定邮箱和手机立即绑定

为什么点击按钮,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季)
  • 参与学习       111162    人
  • 解答问题       1457    个

本课程由浅入深地带您学会Android的常用控件的开发和使用

进入课程

为什么点击按钮,TextView里面的文字没有发生变化呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信