0

さまざまな海軍のものを計算するプログラムを作成しました。ここで、ユーザーの入力、計算、および結果を保存します。つまり、私の同僚は、さまざまなプロジェクト番号を作成するさまざまなクライアントについて計算する必要があります。したがって、これらのさまざまなプロジェクトのために、プログラムのすべての値を保存したいと思います。で、プロジェクトを開始画面として表示しますDataGridView。選択したアイテムに基づいて、プログラムは値をロードする必要があります。

これにデータベースを使用して、他の誰かからの以前のソリューションを見てきましたが、私の質問は、データベースを使用せずにこれを行う方法はありますか? 私はデータベースが初めてで、C# の経験もあまりないからです。誰かがヒント、参照、または小さな例を持っていれば、私はそれを感謝します.

アプリケーションに関する情報:

アプリケーションにはさまざまなタブ ページがあります。各タブページで、ユーザーは幅、高さ、深さなどの入力を行う必要があります。あるタブでは、風の力が他のタブの入力に適用されます。別のタブでは、線の力が異なるタブの複数の入力に適用されます。

これらの値は、異なるクライアント、つまり異なるプロジェクトに対して計算する必要があります。これらのプロジェクトは保存する必要があるため、レビュー、編集などを行うことができます。したがって、プログラムを開くと、さまざまなプロジェクト (プロジェクト番号、クライアント名など) を保持する DataGridView を含むウィンドウが表示されます。プロジェクトをクリックして編集すると、そのプログラムに属する値が表示されるはずです。彼がこのプロジェクトを閉じると、値が保存され、ユーザーは DataGridView で他の項目を選択して、他のプロジェクトの値をロードできるようになります。

私の質問は、これらの「異なるプロジェクト」をその値とともに保存するにはどうすればよいかということです。

4

1 に答える 1

0

OPは「保存」機能を求めています。これは、プログラムの実行全体でデータを保存するだけではありません(アプリが価値を発揮するには、この機能を実行する必要があります)。

データをSDカードのファイルに保存することをお勧めします。これにより、後で呼び出すだけでなく、ユーザーがデバイスを自分のコンピューターの外付けドライブとしてマウントし、他の場所で使用するためにデータを取得できるようになります。

したがって、本当にマルチポイントシステムが必要です。

1)onSaveInstanceState()を実装します。このメソッドでは、基本的にハッシュオブジェクトのようなバンドルが渡されます。アプリを中断したところから正確に再起動するために必要な情報をバンドルに保存します。onCreate()メソッドで、渡されたバンドルがnullでないことを確認し、nullでない場合は、バンドルから状態を復元します。

2)onPause()を実装します。この方法では、SharedPreferencesエディターを作成し、それを使用して、次回アプリを起動するために述べる必要のある状態を保存します。これは主にユーザーの設定(名前の由来)で構成されていますが、アプリの起動状態に関連するその他のものもここに配置する必要があります。ここにはスコアを保存せ、アプリを再起動するために必要なものだけを保存します。次に、onCreate()で、バンドルオブジェクトがない場合は常に、SharedPreferencesインターフェイスを使用してそれらの設定を呼び出します。

3a)スコアなどについては、上記のMathiasのアドバイスに従って、openFileOutput()などを使用してgetFilesDir()で返されたディレクトリにスコアを保存できます。このディレクトリはアプリ専用であり、メインストレージに存在すると思います。他のアプリやユーザーはデータにアクセスできません。それでよければ、これがおそらく進むべき道です。

3b)他のアプリやユーザーがデータに直接アクセスできるようにしたい場合、またはデータが非常に大きくなる場合は、SDカードが最適です。他のアプリケーションとの衝突を避けるために(アプリ名が適度に一意であることが確実でない限り)com / user1446371 / casinoballapp /のようなディレクトリ名を選択し、SDカードにそのディレクトリを作成します。マティアスが指摘したように、最初にSDカードがマウントされていることを確認する必要があります。

File sdcard = Environment.getExternalStorageDirectory();
if( sdcard == null || !sdcard.isDirectory()) {
    fail("sdcard not available");
}
File datadir = new File(sdcard, "com/user1446371/basketballapp/");
if( !datadir.exists() && !datadir.mkdirs() ) {
    fail("unable to create data directory");
}
if( !datadir.isDirectory() ) {
    fail("exists, but is not a directory");
}
// Now use regular java I/O to read and write files to data directory

他のアプリケーションが簡単に読み取れるように、データには単純なCSVファイルをお勧めします。

明らかに、「保存」および「開く」ダイアログを許可するアクティビティを作成する必要があります。私は通常、openintentsファイルマネージャーを呼び出して、それが機能するようにします。ただし、これらの機能を利用するには、ユーザーがopenintentsファイルマネージャーをインストールする必要があります。

于 2013-01-28T11:35:34.443 に答える