所以我在Java中实现了一个ViewPager,为简洁起见,它看起来像这样:
public class ViewpagerActivity extends ViewPager {
private Context _context;
public ViewpagerActivity(Context context) {
super(context);
_context = context;
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
ARViewPagerAdapter adapter = new ARViewPagerAdapter(_context, LayoutInflater.from(_context));
viewPager.setAdapter(adapter);
addView(viewPager);
// TODO Auto-generated constructor stub
}
在Monodroid中,我使用以下方法调用此文件(在jar文件中):
IntPtr _viewpagerview = Android.Runtime.JNIEnv.FindClass("net/salespad/viewpager/ViewpagerActivity");
IntPtr _viewpagerconstructor = JNIEnv.GetMethodID(_viewpagerview, "<init>", "(Landroid/context/Context;)V");
IntPtr _viewpager = JNIEnv.NewObject(_viewpagerview, _viewpagerconstructor);
我的问题是 - 我如何处理最终的IntPtr?如何将其投射到视图中?
答案 0 :(得分:2)
您可以从IntPtr中实例化Java.Lang.Object,如下所示:
var javaObject = new Java.Lang.Object(_viewpager, JniHandleOwnership.TransferLocalRef);
还有JavaCast扩展方法可以帮助您将该对象转换为另一个类:
var viewPager = javaObject.JavaCast<ViewPager>();
但是,您将遇到的问题是无法从C#访问ViewPager类,这意味着逻辑现在需要保留在Java中。