Я пытаюсь обернуть API Android для Android в качестве компонента пользовательского интерфейса для React Native. Я был успешным в конфигурации Android вещей (получение onInitializationSuccess), однако я не могу понять, как вернуть YouTubePlayerView в свое приложение React Native.
Согласно документам, они рекомендуют использовать YouTubePlayerFragment, если вы не можете расширить YouTubeBaseActivity. Поскольку React Native на Android не использует макеты на основе XML, я попытался создать представления программно. Однако, когда я возвращаю wrapping View (я пытался как FrameLayout, но не уверен, что это правильный выбор), я создал его, ничего не отображая в приложении.
Я хочу, чтобы это было очень просто, вот необходимые бит кода:
YouTubeManager.java
public class YouTubeManager extends SimpleViewManager<FrameLayout> implements YouTubePlayer.OnInitializedListener {
// ...
@Override
protected FrameLayout createViewInstance(ThemedReactContext reactContext) {
this.reactContext = reactContext;
FrameLayout view = new FrameLayout(reactContext);
view.setId(View.generateViewId());
FragmentManager fragmentManager = activity.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
YouTubePlayerFragment fragment = new YouTubePlayerFragment();
fragmentTransaction.add(view.getId(), fragment);
fragmentTransaction.commit();
fragment.initialize("SECRET_KEY", this);
return view;
}
// ...
}
YouTube.js
class YouTube extends Component {
render () {
return <YouTubeAndroid {...this.props}/>;
}
};
var iface = {
name : 'YouTube',
propTypes : {
...View.propTypes
},
};
var YouTubeAndroid = requireNativeComponent('YouTube', iface);
module.exports = YouTube;
index.android.js
var YouTube = require('./YouTube');
class YouTubePlayer extends Component {
render() {
return (
<View style={styles.container}>
<Text>hello</Text>
<YouTube />
</View>
);
}
}
Любая помощь будет действительно оценена, спасибо!