2016-05-15 5 views
3

Firstable私は貧しい私の英語のために申し訳ありません。 私はlibgdxを使用して、Androidでjavaでアプリケーションを開発しています。 アプリケーションオブジェクトのいくつかを保存するためにファイルに書きたいと思います。そのためにObjectOutputStreamを使用しています。ここでは、コードの抜粋です:Android Libgdx - ファイルに保存できません

  try { 
       os_savedGame = new ObjectOutputStream(new FileOutputStream("savedGame.txt")); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      try { 
       os_savedGame.writeObject(obj1); 
       os_savedGame.writeObject(obj2); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

私はデスクトップアプリケーションとして、それを実行し、これまでのところは良いが、私は、Androidアプリとして実行しようとしたとき、私は、次のエラーを得た:仮想メソッドを呼び出すための 試みを'null java.io.ObjectOutputStream.writeObject(java.lang.Object)' nullオブジェクトの参照で

デスクトップ版では、ファイルはアンドロイド\ assetsフォルダに保存されていますが、私の携帯電話の同等のフォルダと私はそれを見つけることができませんでした。私は内部メモリと外部メモリの両方でdata/name_of_my_projectを検索しましたが、それを見つけることができませんでした。以前と同じようなエラーがありましたが、デスクトップ版では私がアンドロイド版(スキンは存在しないと言います)でスキンを読み込めなかったとき、私の問題はどこかに関係するかもしれないと思いますファイルはアンドロイド版に保存されています。誰かが私にそれについてのヒントを教えてもらえますか?

ありがとうございます!

答えて

2

私はあなたが公式ドキュメントを読むことをお勧めします: https://github.com/libgdx/libgdx/wiki/File-handling

Internal files are relative to the application’s root or working directory on desktops, relative to the assets directory on Android, and relative to the core/assets/ directory of your GWT project. These files are read-only.

それはあなたのassetsフォルダに保存されたファイルが読み取り専用されていることを言及しています。ゲームの状態を保存するには、Preferences APIを使用することをお勧めします。このAPIを使用すると、Key-Valueペアを保存して簡単に取得できます。詳細はこちら:https://github.com/libgdx/libgdx/wiki/Preferences。ここでは、文字列の中に、あなたのオブジェクトを変換するための

は別の答えです: How to serialize an object into a string

あなたはまだファイルに書き込みたい場合は、ウィキでさらに説明されているローカルストレージを使用する必要があります(一番上のリンクを参照してください)。

+0

答えをありがとう...私は最初のリンクをunsuccessfulyに従おうとしました。私はすでに環境設定について何かを読んでいましたが、このゲームではファイルを書き込んで読み込む必要があります(先生が尋ねました)。 これまでのように、私はスキンをロードするときに同様の問題があったと思います。 – PR16

+0

05-16 14:49:49.235:E/AndroidRuntime(10163):com.badlogic.gdx.utils.GdxRuntimeException:資産がロードされていません:uiskin.json \t at com.badlogic.gdx.assets .AssetManager.get(AssetManager.java:144) at screens.TestScreen。 com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:290)でcom.mygdx.game.MyGdxGame.create(MyGdxGame.java:27) で(TestScreen.java:29) でandroid.opengl.GLSurfaceView $ GLThread.guardedRun(GLSurfaceView.java:1505) android.opengl.GLSurfaceView $ GLThread.run(GLSurfaceView.java:1240) – PR16

+0

あなたができるようにする前にアセットマネージャからロードする必要があるため、エラーですあなたがまだ混乱している場合は、私も15歳の学生です:) –

関連する問題