gpt4 book ai didi

java - 在 AndroidManifest.xml 中声明 Activity 以使用 Intent

转载 作者:行者123 更新时间:2023-12-01 17:08:06 24 4
gpt4 key购买 nike

我尝试将以下 Intent 对象从 fragment SeventhFragment.java 传送到另一个 fragment (SixthFragment.java)。

Intent i = new Intent(getContext(), SixthFragment.class);
i.putExtra("officeHour", hour);
startActivity(i); // this code is in SeventhFragment.java

在 SixthFragment.java 中,我有以下代码来尝试取回该对象:

Intent intent = (Intent) getActivity().getIntent(); // this code is in SixthFragment.java.
OfficeHour add = (OfficeHour) intent.getSerializableExtra("officeHour");

但是,我遇到了一个异常(exception):

android.content.ActivityNotFoundException: Unable to find explicit activity class 
{com.example.app/com.example.app.SixthFragment}; have you declared
this activity in your AndroidManifest.xml?

我可以看出这意味着我需要向 AndroidManifest.xml 添加一个 Activity 声明,但我不知道应该添加什么/应该如何格式化。请注意,我尝试四处寻找预先存在的问题,但我仍然不知道在我的 list 中到底要写什么。谢谢!

最佳答案

Fragment 始终需要由 Activity 托管。您无法使用 Intent 在 fragment 之间进行转换。相反,您可以使用 FragmentTransaction 并将数据作为参数传递:

// this code is in SeventhFragment's underlying Activity
Fragment f = new SixthFragment();
Bundle args = new Bundle();
args.putSerializable("officeHour", hour);
f.setArguments(args);

// Execute a transaction to replace SeventhFragment with SixthFragment
FragmentTransaction ft = getFragmentManager().beginTransaction();
// R.id.myfragment needs to be defined in your Activity's layout resource
ft.replace(R.id.myfragment, f);
ft.commit();

然后您可以在 SixthFragmentonCreateView 中检索参数值:

public class SixthFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
OfficeHour add = (OfficeHour) getArguments().getSerializable("officeHour");
// ...
}
}

或者,您可以将 SixthFragment 嵌入到其自己的 Activity 中,并使用 Intent 来启动它。

您可以在官方Fragment中找到更多信息documentation .

关于java - 在 AndroidManifest.xml 中声明 Activity 以使用 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61446221/

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