环境
操作系统:macOS High Sierra 10.13.4
纱线:未找到
值班员:4.9.0
Xcode:Xcode 9.2内部版本9C40b
软件包:(通缉=>(已安装)
反应本机:0.55.4=>0.55.4
说明
createViewInstance
然后打算在里面添加库片段
receiveCommand
从react端看用户操作。但是,为了将片段添加到容器中,我无法从
ThemedReactContext
CreateView实例
. 做
themedReactContextObj.getCurrentActivity()
产生不推荐的
android.app.FragmentManager
android.support.v4.app.FragmentManager
而是在我的视图管理器中?感谢您的帮助。
以下是我正在使用的基于SO&的一些解决方案的代码;关于显示本机片段的博客。如果我使用
android.app.Fragment
android.support.v4.app.Fragment
:
package com.awesome.awesomelib
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.awesome.awesomelib.AwesomeFragment;
import java.util.Map;
public class AwesomeViewManager extends SimpleViewManager<View> {
public static final String REACT_CLASS = "RCTAwesomeView";
public static final int REACT_COMMAND_CREATE = 1;
private ThemedReactContext mContext = null;
@Override
public String getName() {
return REACT_CLASS;
}
@Override
protected View createViewInstance(ThemedReactContext reactContext) {
mContext = reactContext;
LinearLayout layout = (LinearLayout) LayoutInflater.from(reactContext).inflate(R.layout.ll_awesomeview_container, null);
return layout;
}
@Nullable
@Override
public Map<String, Integer> getCommandsMap() {
return MapBuilder.of("create", REACT_COMMAND_CREATE);
}
@Override
public void receiveCommand(View view, int commandId, @Nullable ReadableArray args) {
Log.d(REACT_CLASS, "receiveCommand: " + commandId);
switch (commandId) {
case REACT_COMMAND_CREATE:
createFragment(view);
break;
}
}
private void createFragment(View view) {
if(mContext != null) {
// load the awesome lib fragment as container
AwesomeFragment awFragment = new AwesomeFragment();
//Here's where I'm stuck !!
mContext.getCurrentActivity().getFragmentManager().beginTransaction().add(R.id.fl_awesomeview_container, awFragment).commit();
}
}
}