2017-04-23 12 views
0
public class MainMenu extends GameMenu{ 

Table table; 

Skin skin; 

public MainMenu(){super();}; 

protected void loadWidgets(){ 

    skin.add("playButton", com.mygdx.game.LIBGDXwrapper.gameGUI.widgets.MainMenuWidgets.loadPlayButton(table)); 
    table.row(); 
    skin.add("hightScoreButton", com.mygdx.game.LIBGDXwrapper.gameGUI.widgets.MainMenuWidgets.loadHighScoreButton(table)); 
    //table.row(); 
} 

protected void loadInputlisteners(){ 
    skin.get("playButton", Button.class); 

} 

@Override 
public String toString(){ 
    return "Menu"; 
} 
} 





public abstract class GameMenu extends Stage{ 

private Settings gameSettings; 

//public GameMenu(Settings gameSettings){ 
// this.gameSettings = gameSettings; 
//} 

public GameMenu(){}; 

protected abstract void loadWidgets(); 

protected abstract void loadInputlisteners(); 

} 



private static enum GameMenus {MainMenu(MainMenu.class); 
    private final Class<? extends GameMenu> menuType; 

    GameMenus(Class<? extends GameMenu> menuType){ 
     this.menuType = menuType; 
    } 

    public Class<? extends GameMenu> createInstance(Settings gameSettings){ 
     GameMenu gui = menuType.getDeclaredConstructor().newInstance(); 
    } 
}; 

私は数時間この作業をしようとしています。 'GameMenu'のクラスタイプ 'Class <'の派生クラス? GameMenu> 'を拡張しますか? 「GameMenu」のすべての派生クラスには、1つの引数 'Settings'を持つコンストラクタがあります。Android Studioでメソッド 'getDeclaredConstructor'で拡張クラスのコンストラクタを使用して、クラスの型をインスタンス化する方法

私は 'getDeclaredConstructor'メソッドからNoSuchMethodExpectionを取得しています。

誰でも私を助けることができたらとても感謝しています。

+0

可能なXY問題タイプの質問 –

+0

@DontKnowMuchButGettingBetterあなたは手の込んだでしてください: おそらく、コンストラクタ引数の型を指定したいですか? – Joao

+0

このコードの目的は何ですか?あなたはそれで何をしようとしていますか? –

答えて

0

だからあなたが言った:

Note that all derived classes of 'GameMenu' have a constructor that with one argument 'Settings'.

をしかし、あなたが使用します。

menuType.getDeclaredConstructor() 

あなたがthe javadocで見てみる場合は、あなたがもしあればgetDeclaredConstructor()は "ノー引数" コンストラクタを返すことがわかります。 、

menuType.getDeclaredConstructor(Settings.class) 
+0

主な問題は、getDeclaredConstructer()メソッドの周りにtry catchを追加する必要があり、アンドロイドのスタジオが要求したことです。とにかくありがとうございました。 – Joao

関連する問題