我正在使用Metaio开发AR Android应用程序。我需要在跟踪真实对象时显示一些数据。为此,我注册了一个回调,这是我找到的最佳方式。
不幸的是,要正确使用 getFragmentManager(),我需要导入Activity属性,但我不能扩展该类(已经扩展)。
我认为 getContext 是正确的方法,但我不知道如何实现它。
这是主要活动中的回调注册:
metaioSDK.registerCallback(new ProvaTracking());
这是跟踪类:
package com.metaio.Example;
import android.annotation.TargetApi;
import android.os.Build;
import android.util.Log;
import com.metaio.sdk.jni.IMetaioSDKCallback;
import com.metaio.sdk.jni.TrackingValues;
import com.metaio.sdk.jni.TrackingValuesVector;
public class ProvaTracking extends IMetaioSDKCallback {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onTrackingEvent(TrackingValuesVector trackingValuesVector) {
super.onTrackingEvent(trackingValuesVector);
for (int i=0; i<trackingValuesVector.size(); i++)
{
final TrackingValues v = trackingValuesVector.get(i);
if (v.isTrackingState())
{
TestFragment trendsFragment = new TestFragment();
getFragmentManager().beginTransaction().add(android.R.id.content, trendsFragment).commit();
Log.d("Alessandro", "Works!!");
}
}
}
}
答案 0 :(得分:0)
添加一个接收Context
的构造函数(注意您需要Activity上下文,而不是应用程序上下文)
所以你要改变你的课程:
public class ProvaTracking extends IMetaioSDKCallback {
private Contect mCtx;
public ProvaTracking(Context context) {
mCtx = context;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onTrackingEvent(TrackingValuesVector trackingValuesVector) {
super.onTrackingEvent(trackingValuesVector);
for (int i=0; i<trackingValuesVector.size(); i++)
{
final TrackingValues v = trackingValuesVector.get(i);
if (v.isTrackingState())
{
TestFragment trendsFragment = new TestFragment();
if (mCtx instanceof Activity)
((Activity) mCtx).getFragmentManager().beginTransaction().add(android.R.id.content, trendsFragment).commit();
Log.d("Alessandro", "Works!!");
}
}
}
}
然后使用metaioSDK.registerCallback(new ProvaTracking(getContext()));