2016-05-27 19 views
-1

私は「PurcahseActivity」と呼ばれるアクティビティを持っており、そこにユーザの取引の価値が表示されています。添付写真の「合計:1138.50ユーロ」 この値は、ユーザーが購入した後に生成されます。 enter image description here他のアクティビティから自分のアクティビティに値を呼び出して値を設定する方法は?

「SalesReportActivity」という別のアクティビティがあります。ここでは、このレイアウトに同じ値を表示する必要があります。

enter image description here

これを達成するための最良の方法は何ですか?

これは私のPurchaseLayout.xmlです。 'net_total'は、表示される値のIDです。

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="64dp" 
    android:layout_gravity="center_horizontal" > 

    <LinearLayout 
     android:id="@+id/net_total_value" 
     android:layout_width="85dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginLeft="5dp" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/net_total" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:textColor="@color/dark_grey_standard_text" 
      android:textSize="15sp" 
      android:textStyle="bold" /> 
    </LinearLayout> 

</TableRow> 

私は多くの研究をしましたが、この特定の質問に対する解決策は見つかりませんでした。基本的には、私はsalesReportに同じ値を表示したいだけです。

+0

この2つは別のアクティビティですか? –

+0

最初のアクティビティから2番目のアクティビティにどのように移動しますか?それは 'Pusrchase'ボタンのクリックやそれに類するものの後でしょうか? –

+0

はい、2つの別々のアクティビティです。ユーザーが「購入」ボタンをクリックすると、最終的な金額が表示されます。レポートアクティビティでは、製品名のみが表示され、合計値も表示したいとします。 – Asb

答えて

0

これを行う最も簡単な方法:ユーザーが購入を行った後

  1. はPurcahseActivityでは、sharedPreferencesにこの値を保存します。 SalesReportActivity負荷で

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    sharedPreferences.edit().putFloat("total", value).apply(); 
    
  2. この値:

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    float value = sharedPreferences.getFloat("total", 0f); 
    
0

あなたを助けることができる私の知っている3つの方法があります:

  • あなたが起動している場合最初のアクティビティの後の2番目のアクティビティ、 を使用してIntent.putExtraを使用し、2番目のアクティビティ
  • その値が1つの以上の場所で再利用されようとしている場合、それは 実際SharedPreferencesに保存して、あなたが非同期的にいずれかの間でその値を取得し、送信したい場合は
  • を必要な場所 にそれを取得するために理にかなって二つの成分が、あなたはそれを保存する欲求を持っていない、あなたは偉大なライブラリを使用することができ、これらの3つの方法のそれぞれは、よく知られており、何度も説明されているので、私は、あなたに任意のコードを与えられていなかったEventBus

と呼ばれます。 SharedPreferencesIntentsの使い方は、いつでも自分で調べることができます。限り、EventBus行く、それは素晴らしいドキュメントが、まだそれを使用することに問題があった場合は、私にpingをするか、ここで質問を書く気軽に。

0

アクティビティで情報を渡す通常の方法は、アクティビティを開始するときにインテントを使用することです。ソースアクティビティでは、

Intent intent = new Intent(this, TargetActivity.class); 
intent.putExtra("YOUR_FLAG", yourValue); 
startActivity(intent); 

あなたのTargetActivityでは、 onCreateで(...)

float yourValue; 
Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    yourValue = extras.getFloat("YOUR_FLAG"); 
} 

2つ以上のアクティビティでデータを保持するには、SharedPreferencesを使用します。より複雑なソリューションが必要な場合は、Database、File、EventBusのような他のアプローチがあります。

関連する問題