gpt4 book ai didi

android - Activity 之上的 Fragment

转载 作者:行者123 更新时间:2023-12-02 09:30:40 27 4
gpt4 key购买 nike

我有一个包含一些元素的主要 Activity 。其中之一是按钮。我想在单击按钮时加载 fragment 。我希望 Fragment 覆盖整个 Activity,而不仅仅是位于其中的布局中。然后在 fragment 中还有一个按钮,它必须加载另一个涵盖所有内容的 fragment ,然后加载另一个 fragment ,依此类推。

因此,我在 Activity 上设置了一个 OnClickListener 来加载第一个 fragment 。该 Activity 加载得很好。如果我单击其他 Activity 的按钮,一切都会很好。但无论我尝试什么,当我单击应该加载 fragment 的按钮时,它总是崩溃。

这是主要 Activity 的代码:

public class SignUpActivity extends AppCompatActivity {

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

Button next = (Button) findViewById(R.id.button_next_name);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SignNameFragment nameFragment = new SignNameFragment();
fragmentTransaction.add(PROBABLY_WHAT_I_AM_DOING_WRONG,nameFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
}
}

所有 xml 都几乎相同。 Activity 的相对布局、 fragment 的 FrameLayout 以及所有这些的 ScrollView、ImageView、EditText、TextView 和 Button。

到目前为止我根据网上的建议尝试过的事情:

  • 主 Activity 的 xml 使用relativelayout。我尝试将 Fragment 加载到其中,但失败了
  • 我把它改成了FrameLayout
  • 我使用了fragmentTransaction.add(R.id.fragment_container,nameFragment)
  • 我没有使用 add(),而是尝试替换(R.id.activity_sign_up,nameFragment)
  • 扩展到 FragmentActivity
  • 在我的主 Activity 的 xml 中将 FrameLayout 设置为 Fragment 容器

我相信我的错误是我没有以正确的方式设置要添加 fragment 的位置。

我很确定这将是一个菜鸟错误,但我以前从未使用过 Fragments。那么有什么建议吗?

谢谢

编辑:这是我点击按钮时出现的错误

E/AndroidRuntime: FATAL EXCEPTION: main Process: be.test.test, PID: 16763 java.lang.RuntimeException: be.test.test.SignUpActivity@276634a3 must implement OnFragmentInteractionListener at layout.SignNameFragment.onAttach(SignNameFragment.java:84) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1043) at android.support.v4.app.BackStackRecord.setLastIn(BackStackRecord.java:838) at android.support.v4.app.BackStackRecord.calculateFragments(BackStackRecord.java:861) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:719) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6145) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

最佳答案

您的错误说明了一切,您没有实现接口(interface)

您的SignUpActivity需要实现接口(interface)OnFragmentInteractionListener,然后您必须重写其方法。

应该是这样的:

public class SignUpActivity extends AppCompatActivity implements SignNameFragment.OnFragmentInteractionListener {
//implement the interface methods here
}

关于android - Activity 之上的 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40053582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com