Java 向活动添加片段
首先,我在这里什么都读 我有一个活动,我想水平分割屏幕并添加两个片段。我知道如何在XML上添加片段,但我不想这样。我想把它们添加到Java上 所以问题是FragmentManager不工作,除非我的活动扩展Fragment。我应该在活动上这样做,还是应该在其中一个片段上添加片段事务方法 如果我将我的活动扩展到片段,它是否也会成为片段 如果我将fragmentmanager和fragmenttransaction放在其中一个片段上,我如何与activity建立连接 这是我希望在其上显示片段的活动Java 向活动添加片段,java,android,android-fragments,fragmentmanager,Java,Android,Android Fragments,Fragmentmanager,首先,我在这里什么都读 我有一个活动,我想水平分割屏幕并添加两个片段。我知道如何在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”操作符创建新片段。改为添加
方法,并通过调用该方法创建新的片段实例。另外,实现片段和活动之间的交互。提示:使用Android Studio向导将片段添加到项目中。Android Studio将生成包含所有必要方法的框架newInstance()
- 您肯定需要使用
(因为您的片段是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不兼容吗?