gpt4 book ai didi

java - 从 fragment 访问 Activity 的最佳方式

转载 作者:太空狗 更新时间:2023-10-29 16:32:29 25 4
gpt4 key购买 nike

所以目前我有一个包含不同 Activity 的应用程序,我使用按钮在 Activity 之间导航。后来我决定我应该添加抽屉导航并改用 fragment 。所以我的一个 fragment 有一堆用户填写的字段,我需要将它们传递到下一个 fragment 。所以我的问题是,我是否将所有工作都保留在 Activity 中并从 fragment 中调用 Activity ?或者我是否只在 fragment 的 java Activity 中包含所有他的 java?大多数情况下,我从第一个 fragment 中获取字段,我想将值传递给下一个 fragment ,以便它可以处理一些计算。

final EditText FinalPriceText = (EditText)         v.findViewById(R.id.editTextPrice);
final EditText TradeInPriceText = (EditText) v.findViewById(R.id.editTextTrade);
i.putExtra("FinalAutoPrice", FinalAutoPriceText.getText().toString());
i.putExtra("TradeInPrice", TradeInPriceText.getText().toString());

startActivity(i);

最佳答案

就计算而言,如果您要经常使用它们并且它们与 activity 或 android 生命周期无关,我会将它们分离到不同的类中,然后您可以从任何地方给他们打电话。

如果它们确实依赖于 activity,您仍然可以将它们分开,但在进行计算时传递对 activity 的引用。您可以通过从任何 fragment

调用 this.getActivity() 来获取父 activity

您可以将 this.getActivity() 转换为任何父 activity 对象,您也可以从该对象调用方法。这工作正常,但您的 fragment 只能与您指定的 activity 一起使用,如果您不小心,它可能会变得草率。

否则将它们放在您需要它们的 fragment 中。如果您需要在应用程序的其他任何地方使用计算,我认为这是最不推荐的。重复代码只是要求将来出现错误。

就传递数据而言,在 fragment2 中创建一个 static 实例方法,然后将其传递到那里。

例如

public Fragment2 extends Fragment {

public static fragment2 newInstance(MyData myDataIPass) {
Fragment2 fragment = new Fragment2();
Bundle args = new Bundle();
args.putInt("someInt", myDataIPass.someInt);
fragment.setArguments(args);
return fragment;
}

}

像这样创建 fragment 事务时调用这个新的实例方法

FragmentManager fm = getActivity().getFragmentManager();
fm.beginTransaction()
.replace(R.id.container, Fragment2.newInstance(MyData myDataIPass))
.commit();

关于java - 从 fragment 访问 Activity 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35421880/

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