将片段添加到 activity

Adding fragments to activity

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

我有一个activity,我想水平分割屏幕并添加2个片段。我知道如何在 XML 上添加片段,但我不想这样做。我想在 Java.

上添加它们

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

如果我将 activity 扩展为 Fragment,它是否也会成为一个片段?

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

这是 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() 方法并通过调用该方法创建新的片段实例。此外,实现您的片段与 activity 之间的交互。提示:使用 Android Studio 向导将片段添加到您的项目中。 Android Studio 将生成骨架,其中已包括所有需要的方法
  • 你肯定需要使用getSupportFragmentManager(因为你的片段是android.support.v4.app.Fragment
  • DEBUG! - 如果你说 "my app is crashing",那是没用的。 Post 你的 logcat/exception/whatever 显示崩溃原因。