Java 向活动添加片段

Java 向活动添加片段,java,android,android-fragments,fragmentmanager,Java,Android,Android Fragments,Fragmentmanager,首先,我在这里什么都读 我有一个活动,我想水平分割屏幕并添加两个片段。我知道如何在XML上添加片段,但我不想这样。我想把它们添加到Java上 所以问题是FragmentManager不工作,除非我的活动扩展Fragment。我应该在活动上这样做,还是应该在其中一个片段上添加片段事务方法 如果我将我的活动扩展到片段,它是否也会成为片段 如果我将fragmentmanager和fragmenttransaction放在其中一个片段上,我如何与activity建立连接 这是我希望在其上显示片段的活动

首先,我在这里什么都读

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

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

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

如果我将fragmentmanager和fragmenttransaction放在其中一个片段上,我如何与activity建立连接

这是我希望在其上显示片段的活动

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);
    }
}
一些建议:

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

你所说的
是什么意思?所以问题是FragmentManager不起作用,除非我的活动扩展了Fragment
?要使用代码添加到Fragment,只需在
activity\u conversion.xml
中创建两个容器布局,然后使用
fragmentTransaction.add(R.id.,Fragment)添加两个片段
片段事务。添加(R.id.,片段)
当我将鼠标悬停在FragmentManager上时,您希望使用
getSupportFragmentManager()
而不是
getFragmentManager()
。我得到不兼容的类型错误。它说我需要导入android.support.v4.app.FragmentManager而不是android.app.FragmentManager。但是我有第一个。如果我扩展到片段,错误就会消失。@MikeM。应用程序在我使用时崩溃。
replace
没有必要向堆栈添加片段。使用getSupportFragmentManager回答了我的问题,谢谢。是因为getFragmentManager与android.support.v4.app.Fragment不兼容吗?