当我尝试在react native中呈现原生引导步骤片段时,我得到了以下错误。
ReactNative:原生调用android. view.InflateException中的异常:com.hello中的二进制XML文件行#32:布局/lb_guidedstep_fragment:对于输入字符串:"?2130903438"由:java.lang.NumberFormatException引起:对于输入字符串:"?2130903438"
公共类MyGuidedStepFragment扩展GuidedStepSupportFragment{
private static final long ACTION_CONTINUE = 1000;
private static final long ACTION_CANCEL = 2000;
public MyGuidedStepFragment() {}
@NonNull
@Override
public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = "Login";
String breadcrumb = "Welcome to App";
String description = "Complete the step to get Signed In";
Drawable icon = getActivity().getDrawable(R.drawable.ic_lock);
return new GuidanceStylist.Guidance(title, description, breadcrumb, icon);
}
@Override
public void onCreateActions(@NonNull List<GuidedAction> actions, Bundle savedInstanceState) {
super.onCreateActions(actions, savedInstanceState);
actions.add(new GuidedAction.Builder()
.id(ACTION_CONTINUE)
.title("Continue")
.description("Click to continue login")
.hasNext(false)
.build());
actions.add(new GuidedAction.Builder()
.id(ACTION_CANCEL)
.title("Cancel")
.description("Click to cancel login")
.hasNext(false)
.build());
}
@Override
public void onGuidedActionClicked(GuidedAction action) {
super.onGuidedActionClicked(action);
long actionId = action.getId();
if (actionId == ACTION_CONTINUE) {
Toast.makeText(this.getActivity().getApplicationContext(), "ACTION CONTINUE", Toast.LENGTH_SHORT).show();
} else if (actionId == ACTION_CANCEL) {
Toast.makeText(this.getActivity().getApplicationContext(), "ACTION CANCEL", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this.getActivity().getApplicationContext(), "NO MATCHING ACTION FOUND", Toast.LENGTH_SHORT).show();
}
}
视图管理器:
公共类MyGuidedStepManager扩展ViewGroupManager{
private static final String REACT_CLASS = "MyGuidedStepManager";
public final int COMMAND_CREATE = 1;
private final ReactApplicationContext reactContext;
public MyGuidedStepManager(ReactApplicationContext reactContext) {
this.reactContext = reactContext;
}
@NonNull
@Override
public String getName() {
return REACT_CLASS;
}
@NonNull
@Override
protected MyGuidedStepLayout createViewInstance(@NonNull ThemedReactContext reactContext) {
MyGuidedStepFragment myGuidedStepFragment = new MyGuidedStepFragment();
MyGuidedStepLayout myGuidedStepLayout = new MyGuidedStepLayout(reactContext, myGuidedStepFragment);
addView(myGuidedStepLayout, myGuidedStepFragment.getView(), 0);
return myGuidedStepLayout;
}
反应原生端:
从“react”导入React;从“@hello/abc”导入{MyGuidedStep};
Const MyGuidedStepView = () =
导出默认MyGuidedStepView;
这个问题可能有点晚了,但是我有确切的问题,将Theme_Leanback_GuidedStep
添加到GuidedStepSupportFragment
解决了这个问题!
override fun onProvideTheme(): Int {
return androidx.leanback.R.style.Theme_Leanback_GuidedStep
}
希望这对别人有帮助!