【问题标题】:Activity to Fragment on button clickActivity 以在按钮单击时进行 Fragment
【发布时间】:2016-10-18 18:42:47
【问题描述】:

我的应用上有导航栏。使用它已经创建了片段。我向应用程序添加了常规活动,并且我发现了如何使用 onclick 方法从片段页面转到活动页面。

通过单击按钮,我想从活动页面转到片段页面。我该怎么做?

谢谢

【问题讨论】:

  • 如果你想回到同一个片段,它启动了活动,然后在最后执行finish(),控制将返回到调用片段。希望对您有所帮助。
  • 感谢您的回复。我将其用于“取消”按钮,以使其返回上一个片段。在这种情况下,这是正确的使用方法吗?
  • 如果你想在片段中移动,那么你必须使用导航栏点击选项卡,或者点击按钮从一个片段到另一个片段..看看我的回答..我希望它解决了您的问题..如果是,请标记为答案。谢谢

标签: android android-fragments android-activity navigationbar


【解决方案1】:

在按钮上应用点击列表并应用以下代码:-

Fragment fragment = new VehiclesFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.container,fragment).commit();

【讨论】:

  • 谢谢,我的片段没有错误。这将是我想要去的片段吗?我是否遗漏了“.class”?
  • 错误:(79, 54) 错误:不兼容的类型:VehiclesFragment 无法转换为 Fragment 这是输入的代码 VehiclesFragment vehicleFragment = new VehiclesFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, vehicleFragment).commit();
  • @arob 请查看我更新的答案。并在您的项目中使用相同的代码。并替换此行 VehiclesFragment VehiclesFragment = new VehiclesFragment();到这个 Fragment vehicleFragment = new VehiclesFragment();
  • 我确实进行了调整,但仍然无法正常工作。错误:不兼容的类型:VehiclesFragment 无法转换为 Fragment
  • @arob 确保您的 VehiclesFragment 类扩展了 Fragment 类。
【解决方案2】:

如果您想关闭当前 Activity 以返回到您的 Fragment-container Activity,您可以调用 finish() 方法或 onBackPressed() 方法(以防您不覆盖它)。


如果您想将片段带到当前活动中,您必须有一个片段容器并将其附加:

getSupportFragmentManager().beginTransaction.add(R.id.container, fragment, TAG).addToBackStack().commit();

【讨论】:

  • 非常感谢!我使用了这个,但在“TAG”上出现错误。我是新手 :)
  • 标签是一个字符串,无论你想识别你的片段
  • 好的,我明白了。那么这段代码会在 onclick 方法中吗? @Override public void onClick(View v) { switch (v.getId()) { case R.id.bSaveVehicle: getSupportFragmentManager().beginTransaction().add (R.id.container, fragment, TAG).addToBackStack() .commit();}
  • 是的。这会将您的片段放入您的容器中并开始其生命周期。
  • 在片段 R.id.container, "fragment" 上出现错误。只是为了确定,这是我想在单击按钮后转到的片段的名称对吗?
【解决方案3】:

试试这个代码..

 btn.setOnClickListener(new View.OnClickListener()){
 @Override
 public void onClick(View v) {
 Intent intent = new Intent(getActivity(),FragmentTest.class);
 getActivity().startActivity(intent);

     }
 });

【讨论】:

  • 感谢您的回复。我收到 getActivity 错误。我需要做什么?
  • 这是错误 Error:(77, 44) error: cannot find symbol method getActivity()
【解决方案4】:

如果你想在片段中移动,那么你必须使用导航栏点击选项卡,或者点击按钮从一个片段到另一个片段..像这样

public void onNavigationDrawerItemSelected(int position) {
    FragmentManager fragmentManager = getFragmentManager();

Fragment fragment = Fragment.instantiate(MainActivity.this, <name of the fragment>);
            Bundle bundle = new Bundle();
            bundle.putBoolean(ALL_EVENTS, true);
            fragment.setArguments(bundle);
            fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();

【讨论】:

  • 嗨,感谢您的回复,我仍然遇到此错误。
  • 当我将此代码放入onNavigationDrawerItemSelected方法时,如何通过单击另一个活动中的按钮来调用它以获取片段?
【解决方案5】:

只需使用这个:

Intent(view.context, DestinationActivity::class.java).also {
    view.context.startActivity(it)

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多