2012-10-02 69 views
3

請幫助我如何運行Libgdx線程下面的代碼 - 在渲染(),創建(),等...Android的意圖和startActivity在Libgdx(非活動或AndroidApplication類)

public class MyGame implements ApplicationListener, InputProcessor { 
... 
Intent discoverableIntent = new 
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
startActivity(discoverableIntent); 
..... 
Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
"http://market.android.com/details?id=" + getPackageName())); 
startActivity(marketIntent); 

的代碼有編譯錯誤。 我搜索了一些類似的線程,但沒有「startActivity」的精確代碼示例。 謝謝。

+1

有什麼錯誤? –

+0

IntelliJ中的「startActivity」字是紅色的。 「擴展活動或Android應用程序」類的編譯沒問題 – nms

+0

無法解析「startActivity」方法。編譯對於「擴展Activity或AndroidApplication」類是可以的 – nms

回答

2

由於startActivity()Activity類中的一種方法,因此出現錯誤。

爲了能夠使用這個,你的類必須

  1. 擴展活動或擴展活動
  2. 某處有一個活動實例類,可以通過構造函數傳入

在第二種情況下,您將擁有類似的東西:

public class MyNonActivity { 
    Context mContext; 
    public MyNonActivity(Context context) { 
     mContext = context; 
    } 

    public void myMethod() { 
     Intent intent = new Intent(mContext, Next.class); 
     mContext.startActivity(intent); 
    } 
} 

,並打電話給你的類從一個ActivityService或別的東西,子類Context或它的一個子類:

MyNonActivity foo = new MyNonActivity(getBaseContext()); 

確保你做到以上或onCreate()之後被調用。

+0

我明白startActivity()是Activity類中的一個方法。無論如何,如何運行startActivity() - 這是一個問題 – nms

+0

@nms請參閱我的編輯。我詳細闡述了第二種方法。 –

+0

不幸的是它會在「startActivity」行的MyNonActivity()中出錯。如何在「Next」類中運行方法?我之前嘗試過類似的東西。並且不可能獲得上下文無活動類。有可能參加主要活動。但也許這是錯誤的方式。我得到了「looper準備錯誤」。我不知道如何與它鬥爭。我上面提到的所有3個例子都試過使用界面。 – nms

15

LibGDX是一個獨立於平臺的庫,因此所有使用LibGDX平臺netural API的代碼本身都必須獨立於平臺(所以沒有Android或Windows調用等)。要訪問特定於平臺的功能,標準方法是定義一個接口,並使用平臺中立代碼中的接口。然後在您的應用程序的Android(或Desktop)特定項目中創建接口的實現,並在初始化libGDX組件時傳遞該實現。

本教程有更多的細節:http://code.google.com/p/libgdx-users/wiki/IntegratingAndroidNativeUiElements3TierProjectSetup

這是同樣的方法的另一種描述(其更好編寫的,但是例如並未明確與您無關):http://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific

本教程有興趣訪問Android原生用戶界面元素,但基本想法與你想要的一樣。

另一個教程:https://carlorodriguez.github.io/blog/2014/10/05/android-platform-specific-code-with-libgdx/

+0

謝謝。我在代碼中添加了第二個示例,但如何運行示例的方法「submitScore」?它應該是靜態的從Libgdx線程運行。但是在這種方法中我有「startActivity」,如果「submitScore」更改爲靜態,則會出現編譯錯誤。 – nms

+0

在第一個例子中,我不明白什麼否定符號「!」意味着名字。如「import android.app。!AlertDialog;」。或者類名「!ActionResolverAndroid」。它會導致編譯錯誤。 – nms

+0

我在我的項目中添加了第一個示例。我有編譯錯誤,類ActionResolverAndroid應該是抽象的。如果我把它弄成抽象的,我在Activity的actionResolver = new ActionResolverAndroid(this);「」上有錯誤。死角 – nms