Нужно подключить компонент:
public class MyComponent extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myComponent);
...
}
...
}
Для него создаю класс Manager
public class MyComponentManager extends SimpleViewManager
public static final String REACT_CLASS = "MyComponent";
@Override
public String getName() {
return REACT_CLASS;
}
private ThemedReactContext mContext = null;
private Activity mActivity = null;
@Override
protected MyComponent createViewInstance(ThemedReactContext context) {
mContext = context;
return new MyComponent(mContext);
}
public MyComponentManager(Activity activity) {
mActivity = activity;
}
}
,класс Package
public class MyComponentPackage implements ReactPackage {
private Activity mActivity = null;
public MyComponentPackage(Activity activity) {
mActivity = activity;
}
@Override
public List
@Override
public List
@Override
public List
и достаю его в файле myComponent.js
import React from 'react';
import {
View,
requireNativeComponent
} from 'react-native';
export default requireNativeComponent('MyComponent');
Только в MyComponentManager в SimpleViewManager должен подаваться class extends View, а у меня - Activity. Как мне подключить мой компонент?
Ответ
В общем, класс Package всего-то нужно зарегистрировать в файле MainApplication.java:
@Override
protected List
До этого, конечно, можно и самому додуматься, но тот факт, что официальном мануале ни единого упоминания про это, вводит в заблуждение. Также в myComponent.js нужно указать дефолтные проптайпы:
import React, {
PropTypes
} from 'react';
import {
View,
requireNativeComponent
} from 'react-native';
let iface = {
name: 'MyComponent',
propTypes: {
...View.propTypes
}
};
export default requireNativeComponent('MyComponent', iface);
Наследовать от вью мою активити не нужно, а просто из вью класса её запустить:
Intent newIntent = new Intent(context, MyComponent.class);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
Комментариев нет:
Отправить комментарий