これは私の質問の続きです:
アプリケーションの以前のアクティビティから何かを取得する際に問題があります。私の場合は、ListOfMeals と呼ばれる前のアクティビティで、リストビュー (朝食、朝のおやつなど) があります。朝食をクリックして食事を追加すると、パン、果物、野菜などの食品のリストをクリックします。など。その後、データベースに追加する必要があります。しかし、私がこれまでに持っているのはこれです。以下を参照してください。
case R.id.btFoodVegetableSave:
String mealname = selected;
String serving = calories.getText().toString();
int i = Integer.parseInt(serving.replaceAll("[\\D]", ""));
String servng = String.valueOf(i);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
String strDate = sdf.format(new Date());
if ( ( mealname.isEmpty() || servng.isEmpty() ) ){
// call for custom toast
viewErrorToast();
}
else {
boolean didItWork = true;
try{
BreakFastLog entry = new BreakFastLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
catch(Exception e){
didItWork = false;
viewErrorToast();
}finally{
if (didItWork){
viewBMRSavedToast();
}
}
} // end of if else statement
break;
私のアプリの構造は次のようなものです:
アクティビティ A - 食事のリスト (リストビュー = 朝食、モーニング スナックなど)
アクティビティ B - アクティビティ A (モーニング スナックなど) から選択され、さらに食べ物を追加するためのボタンがあります
アクティビティ C - 食事カテゴリのリスト (リストビューもパン) 、パスタなど)
アクティビティ D - アクティビティ C から選択 (再びリストビュー: ユーザーがパンを選択したと仮定します)
アクティビティ E - パンのリスト (リストビューが再び表示されます)
アクティビティ F - アクティビティ E から選択 - (ユーザーは、たとえば白パン)
アクティビティ F には保存ボタンがあり、ユーザーが私の例に基づいてモーニング スナックを選択したので、アクティビティ f のデータをモーニング スナック テーブルに保存する必要があります。これどうやってするの?
私の例では、朝食にのみ保存されます。しかし、朝食ではなく朝のおやつを選ぶと、ここで問題が発生します。ユーザーが以前のアクティビティから選択したものを取得して、それぞれの食事に保存するにはどうすればよいですか?
私はこれがこれと関係があることを知っています:
BreakFastLog entry = new BreakFastLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
if else ステートメントを入れなければなりませんが、これを実装する賢い方法が思い浮かびません。事前にご協力いただきありがとうございます。
ノート:
私はこれをやってみました:
Bundle extras = getIntent().getExtras();
String breakfast = this.getIntent().getStringExtra("key_breakfast");
String ms = this.getIntent().getStringExtra("key_morningsnack");
String lunch = this.getIntent().getStringExtra("key_lunch");
String as = this.getIntent().getStringExtra("key_afternoonsnack");
String dinner = this.getIntent().getStringExtra("key_dinner");
String es = this.getIntent().getStringExtra("key_eveningsnack");
if( extras.equals(breakfast)){
BreakFastLog entry = new BreakFastLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
else if( extras.equals(ms) ){
MorningSnackLog entry = new MorningSnackLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
else if( extras.equals(lunch) ){
LunchLog entry = new LunchLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
else if( extras.equals(as) ){
AfternoonSnackLog entry = new AfternoonSnackLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
else if( extras.equals(dinner) ){
DinnerLog entry = new DinnerLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
else if( extras.equals(es) ){
EveningSnackLog entry = new EveningSnackLog(Baguettes_Bagels.this);
entry.open();
entry.createEntry(mealname, servng, strDate);
entry.close();
}
無駄に。これを実行して保存ボタンをクリックすると、例外ハンドラーによってキャッチされます。