提问者:小点点

ReactNative:原生GuidedStepSupportFragment调用中的异常(Android LeanBack)


当我尝试在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;


共1个答案

匿名用户

这个问题可能有点晚了,但是我有确切的问题,将Theme_Leanback_GuidedStep添加到GuidedStepSupportFragment解决了这个问题!

override fun onProvideTheme(): Int {
    return androidx.leanback.R.style.Theme_Leanback_GuidedStep
}

希望这对别人有帮助!