react-native中的basejavamodule文件在哪
发布网友
发布时间:2022-04-25 19:27
我来回答
共1个回答
热心网友
时间:2023-08-25 19:44
实现自定义Toast模块->ToastM(ToastMole在组件中已经存在了不能重名 因此起名ToastM)
1:新建一个react-native项目,将Android部分导入到Androidstudio中
2:新建一个类 ToastM 继承ReacContextBaseJavaMole
代码如下:
package com.wyq;
import android.util.Log;
import android.widget.Toast;
import com.*.react.bridge.ReactApplicationContext;
import com.*.react.bridge.ReactContextBaseJavaMole;
import com.*.react.bridge.ReactMethod;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
/**
* Created by wyq on 2016/1/21.
*/
public class ToastM extends ReactContextBaseJavaMole {
private static final String TAG = "ToastM";
private static final String SHORT = "SHORT";
private static final String LONG = "LONG";
public ToastM(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "ToastM";<span style="color:#3366ff;">//js调用本类使用的名字</span>
}
@ReactMethod<span style="color:#3366ff;">//被js调用的方法</span>
public void show(String message, int ration) {
Log.i(TAG, "show ToastM");
android.widget.Toast.makeText(getReactApplicationContext(), message, ration).show();
}
@Override
public Map<String, Object> getConstants() {//设置JS可以使用的常量
Map<String, Object> Constants = new HashMap<>();
Constants.put(SHORT, Toast.LENGTH_SHORT);
Constants.put(LONG, Toast.LENGTH_LONG);
return Constants;
}
}
2:定义一个包继承reactpackage
代码如下:
package com.wyq;
import com.*.react.ReactPackage;
import com.*.react.bridge.JavaScriptMole;
import com.*.react.bridge.NativeMole;
import com.*.react.bridge.ReactApplicationContext;
import com.*.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* Created by wyq on 2016/1/21.
*/
public class AnExampleReactPackage implements ReactPackage {
@Override
public List<NativeMole> createNativeMoles(ReactApplicationContext reactContext) {
List<NativeMole> moles = new ArrayList<>();
moles.add(new ToastM(reactContext));
moles.add(new RecevierMole(reactContext));
return moles;
}
@Override
public List<Class<? extends JavaScriptMole>> createJSMoles() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
3:注册
在mainactivity里面注册包
代码如下:
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),new AnExampleReactPackage());
}