bounty将在18小时后过期。回答此问题可获得+100声望奖励。YPD希望引起更多人关注此问题。
我已经在一个现有的Java Android项目中集成了一个React Native组件,它遵循了官方的documentation。一切都运行良好,我还能够传递一些属性:
public class NativeFragment extends Fragment {
public NativeFragment() {}
public static NativeFragment newInstance(String param1, String param2) {
NativeFragment fragment = new NativeFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle initialProperties = new Bundle();
initialProperties.putString("key", "Text string");
Fragment reactNativeFragment = new ReactFragment.Builder()
.setComponentName("MyApp")
.setLaunchOptions(initialProperties)
.build();
getParentFragmentManager().beginTransaction().add(R.id.reactNativeFragment, reactNativeFragment).commit();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_native, container, false);
}
}
现在我想更新onCreate
方法中设置的应用属性。文档中提到的是Activity而不是Fragment,因此我不知道如何继续。文档建议使用ReactRootView
,它用于呈现Activity中的React Native组件。
为了完整起见,下面的MainActivity
呈现了一个包含两个片段的底部导航栏:一个片段是本机的,另一个是NativeFragment
。
public class MainActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_native)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);
}
@Override
public void invokeDefaultOnBackPressed() {
super.onBackPressed();
}
}
那么,我该如何更新NativeFragment
的应用属性呢?谢谢!
1条答案
按热度按时间ufj5ltwl1#
像这样:
要更新片段中
React Native
组件的属性,可以使用setArguments
方法。它看起来是这样的:
setArgument
方法来更新NativeFragment
示例,然后使用FragmentManager
的detach
和attach
方法重新呈现片段。代码演练: