Use save button in action bar

This commit is contained in:
Branden Archer
2017-06-18 13:58:50 -04:00
parent 433d31c30f
commit 13b2faab39
9 changed files with 93 additions and 103 deletions

View File

@@ -34,6 +34,28 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
private static final int SELECT_BARCODE_REQUEST = 1;
EditText storeFieldEdit;
TextView storeFieldView;
EditText noteFieldEdit;
TextView noteFieldView;
EditText cardIdFieldEdit;
TextView cardIdFieldView;
EditText barcodeTypeField;
ImageView barcodeImage;
View barcodeIdLayout;
View barcodeTypeLayout;
View barcodeImageLayout;
View barcodeCaptureLayout;
Button captureButton;
Button enterButton;
int loyaltyCardId;
boolean updateLoyaltyCard;
boolean viewLoyaltyCard;
DBHelper db;
@Override
protected void onCreate(Bundle savedInstanceState)
{
@@ -47,6 +69,13 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
{
actionBar.setDisplayHomeAsUpEnabled(true);
}
final Bundle b = getIntent().getExtras();
loyaltyCardId = b != null ? b.getInt("id") : 0;
updateLoyaltyCard = b != null && b.getBoolean("update", false);
viewLoyaltyCard = b != null && b.getBoolean("view", false);
db = new DBHelper(this);
}
@Override
@@ -54,11 +83,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
{
super.onResume();
final Bundle b = getIntent().getExtras();
final int loyaltyCardId = b != null ? b.getInt("id") : 0;
final boolean updateLoyaltyCard = b != null && b.getBoolean("update", false);
final boolean viewLoyaltyCard = b != null && b.getBoolean("view", false);
Log.i(TAG, "To view card: " + loyaltyCardId);
if(viewLoyaltyCard)
@@ -75,25 +99,21 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
}
}
final EditText storeFieldEdit = (EditText) findViewById(R.id.storeNameEdit);
final TextView storeFieldView = (TextView) findViewById(R.id.storeNameView);
final EditText noteFieldEdit = (EditText) findViewById(R.id.noteEdit);
final TextView noteFieldView = (TextView) findViewById(R.id.noteView);
final EditText cardIdFieldEdit = (EditText) findViewById(R.id.cardIdEdit);
final TextView cardIdFieldView = (TextView) findViewById(R.id.cardIdView);
final EditText barcodeTypeField = (EditText) findViewById(R.id.barcodeType);
final ImageView barcodeImage = (ImageView) findViewById(R.id.barcode);
final View barcodeIdLayout = findViewById(R.id.barcodeIdLayout);
final View barcodeTypeLayout = findViewById(R.id.barcodeTypeLayout);
final View barcodeImageLayout = findViewById(R.id.barcodeLayout);
final View barcodeCaptureLayout = findViewById(R.id.barcodeCaptureLayout);
storeFieldEdit = (EditText) findViewById(R.id.storeNameEdit);
storeFieldView = (TextView) findViewById(R.id.storeNameView);
noteFieldEdit = (EditText) findViewById(R.id.noteEdit);
noteFieldView = (TextView) findViewById(R.id.noteView);
cardIdFieldEdit = (EditText) findViewById(R.id.cardIdEdit);
cardIdFieldView = (TextView) findViewById(R.id.cardIdView);
barcodeTypeField = (EditText) findViewById(R.id.barcodeType);
barcodeImage = (ImageView) findViewById(R.id.barcode);
barcodeIdLayout = findViewById(R.id.barcodeIdLayout);
barcodeTypeLayout = findViewById(R.id.barcodeTypeLayout);
barcodeImageLayout = findViewById(R.id.barcodeLayout);
barcodeCaptureLayout = findViewById(R.id.barcodeCaptureLayout);
final Button captureButton = (Button) findViewById(R.id.captureButton);
final Button enterButton = (Button) findViewById(R.id.enterButton);
final Button saveButton = (Button) findViewById(R.id.saveButton);
final Button cancelButton = (Button) findViewById(R.id.cancelButton);
final DBHelper db = new DBHelper(this);
captureButton = (Button) findViewById(R.id.captureButton);
enterButton = (Button) findViewById(R.id.enterButton);
if(updateLoyaltyCard || viewLoyaltyCard)
{
@@ -134,8 +154,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
{
barcodeCaptureLayout.setVisibility(View.GONE);
captureButton.setVisibility(View.GONE);
saveButton.setVisibility(View.GONE);
cancelButton.setVisibility(View.GONE);
setTitle(R.string.viewCardTitle);
storeFieldEdit.setVisibility(View.GONE);
@@ -243,51 +261,38 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
{
enterButton.setText(R.string.enterCard);
}
}
saveButton.setOnClickListener(new View.OnClickListener()
private void doSave()
{
String store = storeFieldEdit.getText().toString();
String note = noteFieldEdit.getText().toString();
String cardId = cardIdFieldEdit.getText().toString();
String barcodeType = barcodeTypeField.getText().toString();
if(store.isEmpty())
{
@Override
public void onClick(final View v)
{
String store = storeFieldEdit.getText().toString();
String note = noteFieldEdit.getText().toString();
String cardId = cardIdFieldEdit.getText().toString();
String barcodeType = barcodeTypeField.getText().toString();
Snackbar.make(storeFieldEdit, R.string.noStoreError, Snackbar.LENGTH_LONG).show();
return;
}
if(store.isEmpty())
{
Snackbar.make(v, R.string.noStoreError, Snackbar.LENGTH_LONG).show();
return;
}
if(cardId.isEmpty() || barcodeType.isEmpty())
{
Snackbar.make(v, R.string.noCardIdError, Snackbar.LENGTH_LONG).show();
return;
}
if(updateLoyaltyCard)
{
db.updateLoyaltyCard(loyaltyCardId, store, note, cardId, barcodeType);
Log.i(TAG, "Updated " + loyaltyCardId + " to " + cardId);
}
else
{
db.insertLoyaltyCard(store, note, cardId, barcodeType);
}
finish();
}
});
cancelButton.setOnClickListener(new View.OnClickListener()
if(cardId.isEmpty() || barcodeType.isEmpty())
{
@Override
public void onClick(View v)
{
finish();
}
});
Snackbar.make(cardIdFieldEdit, R.string.noCardIdError, Snackbar.LENGTH_LONG).show();
return;
}
if(updateLoyaltyCard)
{
db.updateLoyaltyCard(loyaltyCardId, store, note, cardId, barcodeType);
Log.i(TAG, "Updated " + loyaltyCardId + " to " + cardId);
}
else
{
db.insertLoyaltyCard(store, note, cardId, barcodeType);
}
finish();
}
@Override
@@ -361,6 +366,10 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
startActivity(intent);
finish();
return true;
case R.id.action_save:
doSave();
return true;
}
return super.onOptionsItemSelected(item);

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -155,22 +155,6 @@
android:text="@string/enterCard"
android:layout_weight="1.0"/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:padding="10.0dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="true">
<Button android:id="@+id/cancelButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:layout_weight="1.0" />
<Button android:id="@+id/saveButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/save"
android:layout_weight="1.0" />
</LinearLayout>
</LinearLayout>
</ScrollView>

View File

@@ -2,9 +2,15 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_save"
android:icon="@drawable/save_24dp"
android:title="@string/save"
app:showAsAction="always"/>
<item
android:id="@+id/action_delete"
android:icon="@drawable/ic_delete_white_24dp"
android:title="@string/delete"
app:showAsAction="always"/>
app:showAsAction="never"/>
</menu>

View File

@@ -105,15 +105,13 @@ public class LoyaltyCardViewActivityTest
final EditText cardIdField = (EditText) activity.findViewById(R.id.cardIdEdit);
final EditText barcodeTypeField = (EditText) activity.findViewById(R.id.barcodeType);
final Button saveButton = (Button) activity.findViewById(R.id.saveButton);
storeField.setText(store);
noteField.setText(note);
cardIdField.setText(cardId);
barcodeTypeField.setText(barcodeType);
assertEquals(false, activity.isFinishing());
saveButton.performClick();
shadowOf(activity).clickMenuItem(R.id.action_save);
assertEquals(true, activity.isFinishing());
assertEquals(1, db.getLoyaltyCardCount());
@@ -191,8 +189,6 @@ public class LoyaltyCardViewActivityTest
checkFieldProperties(activity, R.id.cardIdView, viewVisibility, cardId);
checkFieldProperties(activity, R.id.barcodeType, View.VISIBLE, barcodeType);
checkFieldProperties(activity, R.id.captureButton, captureVisibility, null);
checkFieldProperties(activity, R.id.saveButton, captureVisibility, null);
checkFieldProperties(activity, R.id.cancelButton, captureVisibility, null);
checkFieldProperties(activity, R.id.barcode, View.VISIBLE, null);
checkFieldProperties(activity, R.id.barcodeIdLayout, cardIdVisibility, null);
@@ -222,6 +218,7 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
Activity activity = (Activity)activityController.get();
ShadowActivity shadowActivity = shadowOf(activity);
DBHelper db = new DBHelper(activity);
assertEquals(0, db.getLoyaltyCardCount());
@@ -229,26 +226,24 @@ public class LoyaltyCardViewActivityTest
final EditText noteField = (EditText) activity.findViewById(R.id.noteEdit);
final EditText cardIdField = (EditText) activity.findViewById(R.id.cardIdEdit);
final Button saveButton = (Button) activity.findViewById(R.id.saveButton);
saveButton.performClick();
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
storeField.setText("store");
saveButton.performClick();
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
noteField.setText("note");
saveButton.performClick();
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
cardIdField.setText("cardId");
saveButton.performClick();
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
}
@Test
public void startWithoutParametersCancel()
public void startWithoutParametersBack()
{
ActivityController activityController = Robolectric.buildActivity(LoyaltyCardViewActivity.class).create();
activityController.start();
@@ -257,10 +252,8 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
final Button cancelButton = (Button) activity.findViewById(R.id.cancelButton);
assertEquals(false, activity.isFinishing());
cancelButton.performClick();
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.isFinishing());
}
@@ -323,9 +316,8 @@ public class LoyaltyCardViewActivityTest
checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
// Cancel the gift card creation
final Button cancelButton = (Button) activity.findViewById(R.id.cancelButton);
assertEquals(false, activity.isFinishing());
cancelButton.performClick();
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.isFinishing());
}
@@ -422,10 +414,9 @@ public class LoyaltyCardViewActivityTest
checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE);
// Cancel the gift card creation
final Button cancelButton = (Button) activity.findViewById(R.id.cancelButton);
// Cancel the loyalty card creation
assertEquals(false, activity.isFinishing());
cancelButton.performClick();
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.isFinishing());
}
}