Fragment无法显示 闪退
主activity:
import android.support.annotation.IdRes;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.roughike.bottombar.BottomBar;
import com.roughike.bottombar.OnTabSelectListener;
public class second extends AppCompatActivity{
private Fragment mHome;
private Fragment mShare;
private Fragment mCar;
private Fragment mMine;
private Fragment mMore;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
BottomBar bottomBar = (BottomBar) findViewById(R.id.bottomBar);
FragmentManager manager = getSupportFragmentManager();
//获取FragmentTransaction对象
final FragmentTransaction transaction = manager.beginTransaction();
//先隐藏所有的Fragment
hideFragments(transaction);
mHome= new homepage();
transaction.replace(R.id.contentContainer, mHome).commit();
bottomBar.setOnTabSelectListener(new OnTabSelectListener() {
@Override
public void onTabSelected(@IdRes int tabId) {
//单击事件 menuItemId 是 R.menu.bottombar_menu 中 item 的 id
switch (tabId) {
case R.id.home:
//如果微信对应的Fragment没有实例化,则进行实例化,并显示出来
if (mHome == null) {
mHome = new homepage();
transaction.add(R.id.contentContainer, mHome, "taghome").commit();
Toast.makeText(getApplicationContext(), "home", Toast.LENGTH_LONG).show();
} else {
//如果微信对应的Fragment已经实例化,则直接显示出来
transaction.show(mHome);
}
break;
case R.id.share:
if (mShare == null) {
mShare = new sharepage();
transaction.add(R.id.contentContainer, mShare, "tagshare").commit();
} else {
//如果微信对应的Fragment已经实例化,则直接显示出来
transaction.show(mShare);
}
case R.id.car:
if (mCar == null) {
mCar = new carpage();
transaction.add(R.id.contentContainer, mCar, "tagcar").commit();
} else {
//如果微信对应的Fragment已经实例化,则直接显示出来
transaction.show(mCar);
}
break;
case R.id.mine:
if (mMine == null) {
mMine = new minepage();
transaction.add(R.id.contentContainer, mMine, "tagmine").commit();
} else {
//如果微信对应的Fragment已经实例化,则直接显示出来
transaction.show(mMine);
}
break;
case R.id.morecar:
if (mMore == null) {
mMore = new morepage();
transaction.add(R.id.contentContainer, mMore, "tagmore").commit();
} else {
//如果微信对应的Fragment已经实例化,则直接显示出来
transaction.show(mMore);
}
break;
}
}
});
}
private void hideFragments(FragmentTransaction transaction) {
if (mHome != null) {
transaction.hide(mHome);
}
if (mCar != null) {
transaction.hide(mCar);
}
if (mShare != null) {
transaction.hide(mShare);
}
if (mMine != null) {
transaction.hide(mMine);
}
if (mMore != null) {
transaction.hide(mMore);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
}
Fragment java:
public class homepage extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View tab1view = inflater.inflate(R.layout.tab1, container, false);
return tab1view;
}
}
fragment xml
<fragment
android:id="@+id/contentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomBar"
/>
bottom插件xml:
<tab
android:id="@+id/home"
title="1"
android:icon="@drawable/home"
barColorWhenSelected="#FF1493" />
<tab
android:id="@+id/share"
android:icon="@drawable/lease"
title="2"
barColorWhenSelected="#00FF7F"
/>
<tab
android:id="@+id/car"
android:icon="@drawable/sale"
title="3"
barColorWhenSelected="#7B1FA2"
/>
<tab
android:id="@+id/mine"
android:icon="@drawable/mine"
title=“4”
barColorWhenSelected="#FF5252"
/>
<tab
android:id="@+id/morecar"
android:icon="@drawable/sale"
title="5"
barColorWhenSelected="#FF9800"
/>
</tabs>
自己还用了一个tab bottom插件 但是如果创建fragment实例便会闪退 去掉代码只显示插件 不显示fragment 求解 本人初学不太熟练