私のアプリでは、約 5 つの異なる画面間を移動し、それぞれが独自のactivity
. ほとんどすべてactivity
の を他の から呼び出すことができるので、冗長なコードを持たないようにactivity
を管理するヘルパー ファイルを作成しようとしています。intents
メソッドを含むヘルパー ファイルを作成し、これらのメソッドを呼び出すときにpublic static
アクティビティcontext
と必要なデータを渡します。これは私のデバイス (Samsung Galaxy S5) で正常に動作しているように見えますが、Android Studio では、ヘルパー ファイルでインテントを AtomicReference にすることをお勧めします。
これらが必要かどうか、またその理由を理解するのを手伝ってもらえますAtomicReference<Intent>
か?
context
また、これらの呼び出しを行うためにヘルパー ファイルに渡すことは適切ですか?
アクティビティヘルパー ファイル:
public class ActivityHelper {
private ActivityHelper() {}
public static void startAddNewMealActivity(Context context) {
Intent newMealIntent = new Intent(context, MealEditActivity.class);
context.startActivity(newMealIntent);
}
public static void startMealListActivity(Context context) {
Intent intent = new Intent(context, MealListActivity.class);
context.startActivity(intent);
}
public static void startEditMealActivity(Context context, FBMeal meal, String mealFBKey) {
Intent intent = new Intent(context, MealEditActivity.class);
intent.putExtra(Constants.INTENT_FB_KEY_EXTRA_TAG, mealFBKey);
intent.putExtra(Constants.INTENT_MEAL_EXTRA_TAG, meal);
context.startActivity(intent);
}
public static void startEditLastMealActivity(final Context context) {
FBHelper.getQueryForMostRecentMeal().addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (FBHelper.isExistingDataSnapshop(dataSnapshot)) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
FBMeal selectedMeal = snapshot.getValue(FBMeal.class);
String selectedMealId = snapshot.getKey();
startEditMealActivity(context, selectedMeal, selectedMealId);
}
} else {
Utils.showToastFromStringResource(R.string.no_meals, context);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Utils.showToastFromStringResource(R.string.error_getting_meal, context);
}
});
}
}
AppCompatActivity のメニューからヘルパー ファイルを呼び出す例:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.edit_meal_menu:
ActivityHelper.startEditMealActivity(this, meal, mealFBKey);
return true;
case R.id.edit_last_entry_menu:
ActivityHelper.startEditLastMealActivity(this);
return true;
case R.id.about_menu:
DialogFragment newFragment = AboutDialog.newInstance();
newFragment.show(getFragmentManager(), "about");
default:
return super.onOptionsItemSelected(item);
}
}