2016-10-25 22 views
0

これはアンドロイドスタジオの私の最初のプロジェクトになります。私はいくつかのJavaとC/C++の経験があります。プログラム開発については、まだ初心者です。私はアンドロイドアプリを開発したことはありません。複数のアクティビティ間でデータを共有する方法は?

このアプリは、ワークアウトプログラムを追跡するために使用されます。ユーザーは、次のそれぞれについて1桁の最大値を入力する必要があります。ベンチ、スクワット、デッドリフト。私はアプリがこれらのインプットを使用してワークアウトプログラムの基盤としたいと思っています。これには、このデータを共有し操作する複数のアクティビティが必要です。

ユーザー入力を取るための最良の方法は何ですか、それを保存し、複数のアクティビティを表示するには、それをアクセスしている(それどこかとアプリが終了しても変更されないままに店を意味しますか)?アプリはユーザーに入力を1回だけ要求します。ユーザーが入力を変更したい場合は、設定で行うことができます。

+3

あなたは 'SharedPreferences'や' database'にデータを保存することができます。 https://developer.android.com/guide/topics/data/data-storage:その後、すべての活動では、あなたはそれが –

+0

それは、すべてのドキュメントに書かれているにアクセスすることができます。html –

答えて

0

はい、インテントは、活動の間で情報を渡すための方法ですが、それらはデータ全体のオブジェクトを保持し、持続性のいくつかの種類を維持することを意味していない、あなたはすぐに発見するようあなたのデータを実装しようとすると、あなたの悪夢になるでしょう。

は、彼らが生きて自動更新するオブジェクトのような、本当にクールな機能を提供して、それは個人的にrealm.ioのようないくつかのSQLiteのラッパーまたはIも聞かせて、それが彼らのC++エンジン上に構築されています、それは非常にです(一部の永続化フレームワークについて見てみましょう使いやすい)...データを何らかの種類のデータ層に保存したら、インテントでオブジェクトの識別情報を渡し、受信アクティビティでそれらのデータを照会するだけです。

こうして、アプリケーション全体の永続モデルは、バックソースアクティビティへのオブジェクトの変更を伝達し、(とParcelablesに関連地獄を失うトラブルを持っていないあなたをシリアル化するための方法です意思でそれを格納するためのRオブジェクト)

ハッピーコーディング!

+0

これは最も理にかなっています。ありがとう。 – Hermes

1

はそれがより明確に、あなたがより良いアンドロイドフレームワークおよび用語の基本的な概念を理解する必要がありますする最初のアクティビティ

Intent intent = new Intent(Activity_FROM.this, Activity_TO.class); 

intent.putExtra("KEY1", value); 

intent.putExtra("KEY2", "a value"); 

startActivity(intent); 

On second activity 

Bundle bundle = getIntent().getExtras(); 

int value = bundle.getInt("KEY1"); 

String value2 = bundle.getString("KEY2"); 

上の意図に

を使用して、この を試してみてください。完了したら、プロセスフローを簡単に理解することができます。

ログインwww.vogella.com

0

インテントは、1つのアクティビティから別のアクティビティにデータを渡すための方法の1つです.シングルトンを使用する方法が他にもいくつかあります:クラスそこでは、インスタンスを作成することによって、任意のアクティビティに書き込んでアクセスすることができます。これを見てくださいhttps://gist.github.com/Akayh/5566992

4

1つのアクティビティから別のアクティビティにジャンプするようにIntentを呼び出すと、2番目のアクティビティまたはそれ以降の使用に必要なデータまたは値を配置できます。すべてのアクティビティコールで同じことをしなければならず、最後にデータが必要な場所で使用することができます。

intentObject.putExtra("KEY", value); 

Bundle bundle = getIntent().getExtras(); 

int value = bundle.getInt("KEY"); 
or 
String value = bundle.getString("KEY"); 
or 
DataObject dataObject = bundle.getString("KEY"); 

Gsonを使用してデータオブジェクトを配置し、データオブジェクトを取得することもできます。

関連する問題