AppCompatActivity类中的Android片段

时间:2017-04-26 13:56:24

标签: android fragment appcompatactivity

我想问你一下AppCompatActivity(由Android工作室生成)和自定义片段。我在Android studio中使用内置生成器制作了AppCompatActivity。但我想使用我的自定义类,所以我已经制作了3个布局xml和3个类。 E.g:

public class ThermoMeter extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.tab1thermometer, container, false);
return rootView;

在我的主要活动中,我将它们用作以下内容:

 public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        switch (position) {
            case 0:
                ThermoMeter tabThermoMeter = new ThermoMeter();
                return tabThermoMeter;
            case 1:
                RealTimeThermoChart rtThermoChart = new RealTimeThermoChart();
                return rtThermoChart;
            case 2:
                HistoryChart historyChart = new HistoryChart();
                return historyChart;
            default:
                return null;
        }
    }

我想问你,如何将我的自定义类(从Fragment扩展)添加到R.id或者我不知道在哪里使用:getFragmentManager().findFragmentById(R.id.fragment_id); ?我需要知道哪个是我的activity类中的当前活动片段,我必须使用活动类中的新数据更新活动片段中的textviews。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

在您的活动中

   public void ThermoMeter (){
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    Fragment_ThermoMeter fThermoMeter = new Fragment_ThermoMeter();
    fragmentTransaction.add(R.id.fragment_container, fThermoMeter, "ThermoMeter");
    fragmentTransaction.commit();

}

每个片段都一样..谢谢你想要的方法:)

在你的xml layout_activity

 <FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_below="@+id/bg1"
    android:layout_alignParentStart="true">
</FrameLayout>