2017-02-21 3 views
0

Ich habe einen Rückruf in Unity erstellt, damit ich Ergebnisse von einer Android App an die Unity App zurücksenden kann. Ich bevorzuge das mit UnitySendMessage, weil es viel "sauberer" ist.Rückruf an Unity ist null

verwendete ich die genaue eample hier gegeben: Callback Listener in Unity - How to call script file method from UnityPlayerActivity in Android

Unity C# -Code:

public class MoviePlayer : MonoBehaviour { 

// Use this for initialization 
void Awake() { 

    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
    AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity"); 


    StartUpCallback startupCallback = new StartUpCallback(); 
    AndroidJavaObject control = new AndroidJavaObject("vrbridge.Control", activity); 
    //control.Call("startUp"); 
    control.Call("startUp", startupCallback); 

} 

class StartUpCallback: AndroidJavaProxy 
{ 
    public StartUpCallback() : base("vrbridge.StartUpCallback") { } 

    public void OnSuccess() { } 
    public void OnFailure() { } 
} 
} 

Android Code:

public class Control implements LibraryManagerInitStartDialogFragment.ConfigurationFragmentListener{ 

String TAG = "QuickPlayTest"; 


private Activity _activity; 
private StartUpCallback _startUpCallback; 

public Control(){ 
    Log.d(TAG, "Constructor."); 

} 

public Control(Activity activity){ 
    Log.d(TAG, "Constructor. Activity = " + activity); 
    _activity = activity; 
} 


public void startUp(StartUpCallback startUpCallback){ 
    Log.d(TAG, "startUp. Callback = " + startUpCallback); 
    _startUpCallback = startUpCallback; 
    new LibraryManagerInitStart(_activity, this); 
    Log.d(TAG, "startUp - end"); 
} 
} 

public interface StartUpCallback { 
    public void onSuccess(); 
    public void onFailure(); 
} 

Aus irgendeinem Grund der Parameter startUpCallback in Start() immer Null.

Ich versuchte, es mit dem gleichen Ergebnis zum Konstruktor zu verschieben. OTOH, der Wert der Aktivität ist in Ordnung.

Habe ich etwas übersehen?

Antwort

0

Vielleicht ist das Problem, dass Ihr C# -Proxy die Java-Schnittstelle nicht korrekt implementiert. Beachten Sie die Großschreibung Unterschiede in dem Wort "on/On".

Verwandte Themen