安卓使用原生UI封装View的问题



  • 根据官网的例子,自己封装一个简单的DEMO试试。
    public class CustomViewManager extends SimpleViewManager<TextView> {

    @Override
    public String getName() {
        return "CustomView";
    }
    @Override
    protected TextView createViewInstance(ThemedReactContext reactContext) {
        TextView textView = new TextView(reactContext);
        textView.setText("测试文本");
        textView.setTextColor(Color.BLACK);
        return textView;
    }
    

    }

    然后在MainActivity里面

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        mReactRootView = new ReactRootView(this);
        mReactInstanceManager = ReactInstanceManager.builder().setApplication(getApplication())
                .setBundleAssetName("index.android.bundle")
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .addPackage(new CustomPackage())
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();
        mReactRootView.startReactApplication(mReactInstanceManager, "AwesomeProject", null);
    
    
        setContentView(mReactRootView);
    }
    

    然后Custom.js
    'use strict';

    import { View,requireNativeComponent,PropTypes } from 'react-native';
    var iface = {
    name:'CustomView',
    propTypes:{
    ...View.propTypes
    }
    };

    module.exports = requireNativeComponent('CustomView',iface);

    最后在index.android.js

    class AwesomeProject extends React.Component {
    render() {
    return (
    <RCTCustomView {...props} ></RCTCustomView>
    )
    }
    }

    结果运行起来一片空白,也没有报错。

    到后面又报错。
    0_1463735202808_QQ截图20160520170631.png

    是不是在安卓里面不能这样用原生的UI?
    如果那些组件是通过 xml文件 findViewById的形式 获取的话,是不是也不可以呢?

    找了好久资料都找不到,希望有碰到一样问题的朋友跟我说说解决办法,感谢。



  • 最后您怎么解决的?


登录后回复