android - 是否可以从 Activity 类启动 Fragment 类..使用 Intent

标签 android android-fragments android-activity

我有一个 MainActivity 类,是否可以使用 Button onclicklistner 启动一个 fragment 类

主要 Activity 类:

public class MainActivity extends AppCompatActivity  {

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

    Button r_btn=(Button) findViewById(R.id.btn_register);
    r_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MainActivity.this, test.class);
            startActivity(i);
        }
    });

fragment 类

public class test extends Fragment{

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_test, container, false);
    rootView.findViewById(R.id.label1);

    // Inflate the layout for this fragment
    return rootView;
    }
}

任何提示都会有所帮助..

最佳答案

是的,你可以,但你不能像对待 Activity 一样对待 fragment ,所以你不能使用 startActivity 方法。使用 fragment 管理器调用 fragment

 fragmentContainer = (RelativeLayout) findViewById(R.id.fragmentContainer);

  r_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           replaceFragmentInContainer(new test(), fragmentContainer.getId(), getSupportFragmentManager());
        }
    });



 public void replaceFragmentInContainer(Fragment DestinationFragment,int containerResourceID,FragmentManager fragmentManager )
    {
        FragmentTransaction ft=fragmentManager.beginTransaction();
        int viewResourceID = containerResourceID;
        ft.replace(viewResourceID, DestinationFragment);
        ft.commit();
    }

Activity xml 中的容器将处理您的 fragment

 <RelativeLayout
            android:id="@+id/fragmentContainer"
            android:layout_width="match_parent"
            android:layout_below="@+id/toolbar"
            android:layout_height="match_parent"
            >
        </RelativeLayout> 

或者您可以查看 this

关于android - 是否可以从 Activity 类启动 Fragment 类..使用 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37761248/

相关文章:

android - Android 中的全屏 DialogFragment(通过 ActionBar)

android - 如何检测 Android 中的用户交互

java - 在 android java 上切换到另一个 java 类的代码

android - 如何使用 Viewpager2 和 Mediator 选项卡布局动态添加和删除 fragment 页面

java - 安卓 : Error retrieving parent for item

android - 后退按钮重新启动 Activity 而不是返回

android - Kotlin Coroutines - 返回流的暂停函数永远运行

android - 使用 SDK 管理器更新 SDK 时收到错误

android - 如何在 React Native iOS 中对图像进行透明渐变?

android - 缩放到特定的经度和纬度 ArcGis android sdk