安卓fragment transaction add方法報錯


這個問題百度了很多能用的很少!

原來看的B站的視頻教程比較老了參數不匹配!我記一下安卓studio3.1的方法

切換fragment 前都先要 FragmentManager manager=getSupportFragmentManager()  //這個是 android.support.v4.app.FragmentManager;

然后FragmentTransaction transaction=manager.beginTransaction();  之后執行  transaction.replace(fragment 的id); 最后  transaction.commit();

感覺一般主窗口載入窗口你會Add一個fragment  之后點擊切換的時候 程序就會崩潰!!!!  你要在載入你fragment  前面加入 transaction=manager.beginTransaction();不管你載入那個fragment  都加這一句

代碼如下寫的很low 湊合看

主窗口代碼

package com.stdu.myllogin;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView zhanghaodenglu;
private TextView dongtaimimadenglu;
private FragmentManager manager;
private FragmentTransaction transaction;
private  YanZhengMaFragment yanZhengMaFragment;
private   LoginFragment loginFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       loginFragment=new LoginFragment();
        manager= getSupportFragmentManager();
      transaction=manager.beginTransaction();
      transaction.replace(R.id.login_frea,loginFragment);
      transaction.commit();

      zhanghaodenglu=findViewById(R.id.zhanghao_login);
      dongtaimimadenglu=findViewById(R.id.mima_login);
      zhanghaodenglu.setOnClickListener(listener);
      dongtaimimadenglu.setOnClickListener(listener);
        yanZhengMaFragment=new YanZhengMaFragment();
        loginFragment=new LoginFragment();

    }

    private View.OnClickListener listener=new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId())
            { case R.id.mima_login:

                hideFragment(transaction);

                //transaction.remove(loginFragment);
                transaction=manager.beginTransaction();//這里一定要再寫一遍 否則會出錯
                transaction.replace(R.id.login_frea,yanZhengMaFragment);
                transaction.commit();
              //  Toast.makeText(MainActivity.this,"驗證碼登陸測試",Toast.LENGTH_SHORT).show();
                break;
                case  R.id.zhanghao_login:
                    hideFragment(transaction);

                    transaction=manager.beginTransaction();//這里一定要再寫一遍 否則會出錯
                    transaction.replace(R.id.login_frea,loginFragment);
                    transaction.commit();
                    //Toast.makeText(MainActivity.this,"賬號登陸測試",Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };

    private void hideFragment(FragmentTransaction transaction) {
        if (loginFragment != null) {
            
            transaction.remove(loginFragment);
        }
        if (yanZhengMaFragment != null) {
            
            transaction.remove(yanZhengMaFragment);
        }
    }
}

  布局界面不寫了看看我的哈皮運行截圖吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM