我想将活动替换为片段,此代码无效。
Intent intent = new Intent(Activity.this, Fragment.class);
startActivity(intent);
finish();
答案 0 :(得分:1)
您无法从活动切换到片段,因为片段没有活动就没有自己的存在。即片段在活动内部起作用 基本上,Fragments主要用于创建多窗格屏幕。
如果你可以替换上面代码示例中提到的片段(与Activity关联)来更改UI,那么在Activity内部。
答案 1 :(得分:0)
在您的活动中尝试这样做
@Override
public void replaceFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
if (addToBackStack) {
transaction.addToBackStack(null);
} else {
getSupportFragmentManager().popBackStack(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
transaction.replace(R.id.flContent, fragment);
transaction.commitAllowingStateLoss();
getSupportFragmentManager().executePendingTransactions();
}
并像这样使用
YourFragment mYourFrag = new YourFragment ();
replaceFragment(mYourFrag , false);
答案 2 :(得分:0)
创建一个类似
的Fragmen类public class FragmentName extends android.support.v4.app.Fragment {}
然后你可以投射一个活动来查看:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View returner = null;
Intent intent = new Intent([CONTEXT],[CLASSNAME.class]);
Bundle args = this.getArguments();
final Window w = [LocalActivityManager].startActivity("Title", intent);
final View wd = w != null ? w.getDecorView() : null;
if (wd != null) {
ViewParent parent = wd.getParent();
if(parent != null) {
ViewGroup v = (ViewGroup)parent;
v.removeView(wd);
}
wd.setVisibility(View.VISIBLE);
wd.setFocusableInTouchMode(true);
if(wd instanceof ViewGroup) {
((ViewGroup) wd).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
}
}
returner = wd;
return returner;
}