将片段添加到活动中

时间:2017-06-07 07:51:08

标签: java android android-fragments fragmentmanager

首先,我在这里阅读所有内容。 https://developer.android.com/guide/components/fragments.html

我有一个活动,我想水平划分屏幕并添加2个片段。我知道如何在XML上添加片段,但我不想这样做。我想在Java上添加它们。

所以问题是FragmentManager无法工作,除非我的活动扩展了Fragment。我应该在活动上这样做,还是应该在其中一个片段上添加片段事务方法?

如果我将我的活动扩展到Fragment,它是否也会变成片段?

如果我将fragmentmanager和fragmenttransaction放在其中一个片段上,我如何才能与活动建立连接?

这是我希望我的片段显示在

上的活动
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class ConversionActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_conversion);

        NumpadFragment fragment = new NumpadFragment();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.numpad_layout,fragment);
        fragmentTransaction.commit();

    }
}

这是片段之一

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class NumpadFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_numpad,container,false);
    }
}

1 个答案:

答案 0 :(得分:1)

一些建议:

  • 使用fragmentTransaction.replace(除非您需要将片段添加到堆栈中)
  • 作为片段的内容,请使用FrameLayout
  • 不要通过“new”运算符创建新片段。改为添加newInstance()方法并通过调用methrod创建新的片段实例。此外,实现片段和活动之间的交互。提示:使用Android Studio向导将片段添加到项目中。 Android Studio将生成包含所有必需方法的骨架
  • 您肯定需要使用getSupportFragmentManager(因为您的片段是android.support.v4.app.Fragment
  • DEBUG! - 如果你说“我的应用程序正在崩溃”,那就没用了。发布你的logcat / exception /以显示崩溃原因。