Как расширить Activity в уже расширенном классе Java
Я разрабатываю приложение AR Android с использованием Metaio. Мне нужно показать некоторые данные, когда реальный объект был отслежен. Для этого я регистрирую обратный вызов, это лучший способ, который я нашел.
К сожалению, чтобы правильно использовать 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!!");
}
}
}
}
1 ответ
Добавить конструктор, который принимает 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()));