1

テキスト ファイル (列挙型に解決される値を保持する) を使用して、アプリが表示するビジュアル インターフェイスを作成するアプリを作成しようとしています。質問は少し複雑なので、結果を説明するだけの方がよいと思います。

私がやりたいのは、ファイルを一度に 2 文字 (数字でなければならない) 読み取り、それを文字列 [str] (制御文字を含む) に連結して、その文字列を R.drawable [R .drawable.str] を取得して正しい画像を表示します。

より具体的には、 R.drawable に与える文字列を作成して、希望する方法で解決することも可能ですか、それとも踊る必要がありますか?

アプリ開発ライフサイクルのある時点で、これらのファイルを生成してデバイスで使用する機能を実装する予定です。ユーザーがそれらにアクセスできないことを保証することは可能ですが、テキストファイルの形式として存在することはできますか?

「既知のディレクトリ」にあるシステム上のファイルから読み取るために必要なものはありますか?

テキスト ファイルを wtriting するときに carrage-return-line-feed を使用できますか?また、制御コードを管理する以外に何かを行う必要がありますか? 、およびシステム読み取りエラー (発生する必要がありますか)?

4

1 に答える 1

1

アプリにいくつかのテキスト ファイルを提供するシナリオでは、それらをプロジェクトの /res/assets ディレクトリに含めてから、「最初の実行」時に電話の内部メモリにあるアプリの /files ディレクトリにコピーすることができます。

/files ディレクトリは、ユーザーがファイル自体に直接アクセスできないようにする場合に、ユーザーが作成したファイルを保存するのにも適しています (内部メモリには、ユーザーが電話へのルート アクセス権を持っている場合にのみアクセスできます)。

リソースにアクセスするためのテキスト文字列の連結に関しては、すべての R.foo.bar 識別子が実際には整数 ID へのテキストの「キー」であるため、これは機能しません。つまり、たとえば R.drawable.my_icon は、コンパイラ環境では「文字列」としてのみ存在し、ビルド時に整数に変換されます。

ドローアブルに image_01、image_02 などの名前を付けて、アセット ディレクトリに配置することを検討してください。その後、リソース識別子ではなくファイル名でそれらを参照/アクセスできます。

編集:アセット ディレクトリから電話の SD カードにファイルをコピーする例については、この質問への回答を参照してください... Android: 「アセット」内のファイルを SD カードにコピーする方法は?

内部の /files ディレクトリにコピーするには、次の行を置き換えます...

out = new FileOutputStream("/sdcard/" + files[i]);

...に似たもので...

out = Context.openFileOutput(files[i], MODE_PRIVATE);

openFileOutput(...)アプリの /files ディレクトリに書き込むことができるファイルを自動的に作成します。同様に、後日、 を使用openFileInput(...)して /files ディレクトリから読み取ることができます。

于 2011-04-10T21:37:03.963 に答える