這個問題百度了很多能用的很少!
原來看的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);
}
}
}
布局界面不寫了看看我的哈皮運行截圖吧

