diff --git a/app/src/main/java/com/project/survey/App.kt b/app/src/main/java/com/project/survey/App.kt index f8aa53a..f445b66 100644 --- a/app/src/main/java/com/project/survey/App.kt +++ b/app/src/main/java/com/project/survey/App.kt @@ -41,7 +41,7 @@ class App : SurveyorApp() { } - var lastRecordBrowseType: Int = 0 +// var lastRecordBrowseType: Int = 0 private val coordinatorSystemNotifier = CoordinatorSystemNotifierImpl() override fun onCreate() { diff --git a/app/src/main/java/com/project/survey/ui/instrument/setupstation/CoordinatePointsLibraryActivity.java b/app/src/main/java/com/project/survey/ui/instrument/setupstation/CoordinatePointsLibraryActivity.java index aacf05a..a44f480 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/setupstation/CoordinatePointsLibraryActivity.java +++ b/app/src/main/java/com/project/survey/ui/instrument/setupstation/CoordinatePointsLibraryActivity.java @@ -251,6 +251,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity { EditCoordinatePointActivity.start(launcher, CoordinatePointsLibraryActivity.this, selItem.get(0).id); }); + binding.pointsLibraryBtnDelete.setVisibility(View.GONE); binding.pointsLibraryBtnDelete.setOnClickListener(v -> { List selItem = coordinatePointLibraryAdapter.getSelItem(); if (selItem == null || selItem.size() == 0) { @@ -326,12 +327,12 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity { if (isSelect) { binding.pointsLibraryBtnConfirm.setVisibility(View.VISIBLE); binding.pointsLibraryBtnEdit.setVisibility(View.GONE); - binding.pointsLibraryBtnDelete.setVisibility(View.GONE); +// binding.pointsLibraryBtnDelete.setVisibility(View.GONE); binding.pointsLibraryBtnExport.setVisibility(View.GONE); } else { binding.pointsLibraryBtnConfirm.setVisibility(View.GONE); binding.pointsLibraryBtnEdit.setVisibility(View.VISIBLE); - binding.pointsLibraryBtnDelete.setVisibility(View.VISIBLE); +// binding.pointsLibraryBtnDelete.setVisibility(View.VISIBLE); binding.pointsLibraryBtnExport.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/project/survey/ui/instrument/setupstation/StakingNewJobActivity.java b/app/src/main/java/com/project/survey/ui/instrument/setupstation/StakingNewJobActivity.java index 82cfaf9..593ee39 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/setupstation/StakingNewJobActivity.java +++ b/app/src/main/java/com/project/survey/ui/instrument/setupstation/StakingNewJobActivity.java @@ -203,6 +203,7 @@ public class StakingNewJobActivity extends BaseSurveyNewActivity { setResult(RESULT_OK, intent); finish(); }); + binding.pointsLibraryBtnNewCreate.setVisibility(View.GONE); binding.pointsLibraryBtnNewCreate.setOnClickListener(v -> showPointDialog(null, getString(R.string.new_point))); boolean isSelect = getIntent().getBooleanExtra(KEY_IS_SELECT, true); diff --git a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java index a028a46..69abc5b 100644 --- a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java +++ b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/PointStakingActivity.java @@ -233,7 +233,7 @@ public class PointStakingActivity extends BaseSurveyNewActivity { //放样记录 binding.tvStakingRecord.setOnClickListener(v -> { stopSoundPool(); - RecordsActivity.start(this, RecordTypeConstants.TYPE_POINT_STAKE); + RecordsActivity.start(this, workId); }); //仅观测 binding.layoutDragButton.drWatchSurvey.setOnClickListener(v -> watchSurvey()); diff --git a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java index 1090b15..2ceeb5a 100644 --- a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java +++ b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java @@ -27,6 +27,7 @@ import com.bingce.data.sync.utils.LoadCurrentProjectIdKt; import com.bingce.data.sync.utils.LoadCurrentRoadIdKt; import com.bingce.data.sync.utils.LoadCurrentWaterPipeIdKt; import com.bingce.data.sync.utils.LoadUserConfigKt; +import com.bingce.utils.IntentUtil; import com.bingce.utils.StringUtil; import com.bingce.utils.ThreadPoolUtil; import com.hjq.permissions.Permission; @@ -71,7 +72,7 @@ public class RecordsActivity extends ColorfulActivity { private ShapeTextView tv_filter_dcs_type; private ActivityRecordsBinding binding; - private int currentTypeFromSpinner; + private int currentTypeFromSpinner = RecordTypeConstants.TYPE_POINT_STAKE; private final RecordsActivityFilterUtils filterUtils = new RecordsActivityFilterUtils(() -> this, () -> currentTypeFromSpinner, () -> tv_filter_time, () -> tv_filter_dcs_type); private final RecordsActivityExportUtils exportUtils = new RecordsActivityExportUtils(() -> this, () -> currentTypeFromSpinner); @@ -82,6 +83,7 @@ public class RecordsActivity extends ColorfulActivity { private final RecordsActivityHeaders headers = new RecordsActivityHeaders(() -> this); private final RecordsViewModelKt.HolderInActivity holderInActivity = new RecordsViewModelKt.HolderInActivity(this); + private String workId = ""; public static void start(Context context, int type) { Intent intent = new Intent(context, RecordsActivity.class); @@ -94,6 +96,14 @@ public class RecordsActivity extends ColorfulActivity { context.startActivity(intent); } + private static final String KEY_WORK_ID = "keyWorkId"; + + public static void start(Context context, String workId) { + Intent intent = new Intent(context, RecordsActivity.class); + intent.putExtra(KEY_WORK_ID, workId); + context.startActivity(intent); + } + @SuppressLint("SourceLockedOrientationActivity") @Override protected void onCreate(Bundle savedInstanceState) { @@ -108,9 +118,13 @@ public class RecordsActivity extends ColorfulActivity { super.onCreate(savedInstanceState); binding = ActivityRecordsBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); - setSupportActionBar(binding.toolbarWithOneSpinner); + setSupportActionBar(binding.toolbar); if (getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setTitle("采集记录"); + + workId = IntentUtil.stringExtra(this, KEY_WORK_ID); + tv_top_date_filter = findViewById(R.id.activity_records_top_date_filter); tv_filter_time = findViewById(R.id.tv_filter_time); tv_filter_dcs_type = findViewById(R.id.tv_filter_dcs_type); @@ -126,7 +140,8 @@ public class RecordsActivity extends ColorfulActivity { tv_filter_dcs_type.getShapeDrawableBuilder().setSolidColor(Color.WHITE).intoBackground(); tv_filter_other.getShapeDrawableBuilder().setSolidColor(Color.WHITE).intoBackground(); } - initSpinnerType(); +// initSpinnerType(); + updateRecyclerView(); headers.initHeaders(); binding.ivOrder.setOnClickListener(view -> { isSortByTimeAcs = !isSortByTimeAcs; @@ -149,110 +164,110 @@ public class RecordsActivity extends ColorfulActivity { /** * 切换里程坐标等记录类型 */ - private void initSpinnerType() { - binding.spinner1.setOnItemSelectedListener(spinnerListener); - - List spinnerTitlesList = new ArrayList<>(); - for (Map.Entry entry : recordsUtilsMap.entrySet()) { - if (entry == null) { - continue; - } - IRecordsUtils recordsUtils = entry.getValue(); - if (recordsUtils == null) { - continue; - } - int type = entry.getKey(); - String name = recordsUtils.name(); - switch (type) { - case RecordTypeConstants.TYPE_CUSTOM_ZHONG_JIAO_ONE: - if (AppChannel.customChannel == AppChannel.CUSTOM_ZJYGJ) { - spinnerTitlesList.add(name); - } - break; - case RecordTypeConstants.TYPE_CUSTOM_TIAN_JING_ONE: - if (AppChannel.customChannel == AppChannel.CUSTOM_CR18SZ) { - spinnerTitlesList.add(name); - } - break; - case RecordTypeConstants.TYPE_CUSTOM_MDM: - if (AppChannel.customChannel == AppChannel.CUSTOM_MONITOR) { - spinnerTitlesList.add(name); - } - break; -// case RecordTypeConstants.TYPE_ROTARY_BRIDGE_6COM: -// if (AppChannel.customChannel == AppChannel.CUSTOM_6_COM) { +// private void initSpinnerType() { +// binding.spinner1.setOnItemSelectedListener(spinnerListener); +// +// List spinnerTitlesList = new ArrayList<>(); +// for (Map.Entry entry : recordsUtilsMap.entrySet()) { +// if (entry == null) { +// continue; +// } +// IRecordsUtils recordsUtils = entry.getValue(); +// if (recordsUtils == null) { +// continue; +// } +// int type = entry.getKey(); +// String name = recordsUtils.name(); +// switch (type) { +// case RecordTypeConstants.TYPE_CUSTOM_ZHONG_JIAO_ONE: +// if (AppChannel.customChannel == AppChannel.CUSTOM_ZJYGJ) { // spinnerTitlesList.add(name); // } // break; - default: - spinnerTitlesList.add(name); - break; - } - } - - ArrayAdapter mSpinnerAdapter = new ArrayAdapter<>(this, - R.layout.spinner_dropdown_item_my_with_background, android.R.id.text1, - spinnerTitlesList); - binding.spinner1.setAdapter(mSpinnerAdapter); - - //设置默认记录类型 - int type = App.instance.getLastRecordBrowseType(); - Intent intent = getIntent(); - if (intent != null && intent.hasExtra(KEY_TYPE)) { - type = intent.getIntExtra(KEY_TYPE, 0); - } - int lastType = Math.max(type, 0); - - IRecordsUtils utils = recordsUtilsMap.get(lastType); - int index = 0; - if (utils != null) { - String name = utils.name(); - boolean found = false; - for (index = 0; index < spinnerTitlesList.size(); index++) { - if (spinnerTitlesList.get(index).equals(name)) { - found = true; - break; - } - } - if (!found) { - index = 0; - } - } - binding.spinner1.setSelection(index); - } - - //里程计算坐标等类型切换监听器 - AdapterView.OnItemSelectedListener spinnerListener = new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - String typeString = binding.spinner1.getSelectedItem().toString(); - Set> entries = recordsUtilsMap.entrySet(); - for (Map.Entry entry : entries) { - if (entry.getValue().name().equals(typeString)) { - currentTypeFromSpinner = entry.getKey(); - if (currentTypeFromSpinner != RecordTypeConstants.TYPE_TUNNEL_BACK_BREAK && currentTypeFromSpinner != RecordTypeConstants.TYPE_WATER_PIPE_BACK_BREAK) { - filterUtils.resetTcsType(); - tv_filter_dcs_type.setVisibility(View.GONE); - } else { - tv_filter_dcs_type.setVisibility(View.VISIBLE); - } - break; - } - } - - updateRecyclerView(); - App.instance.setLastRecordBrowseType(currentTypeFromSpinner); - SharedPreferences prefs = - PreferenceManager.getDefaultSharedPreferences(RecordsActivity.this); - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt("lastRecordBrowseType", App.instance.getLastRecordBrowseType()); - editor.apply(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - } - }; +// case RecordTypeConstants.TYPE_CUSTOM_TIAN_JING_ONE: +// if (AppChannel.customChannel == AppChannel.CUSTOM_CR18SZ) { +// spinnerTitlesList.add(name); +// } +// break; +// case RecordTypeConstants.TYPE_CUSTOM_MDM: +// if (AppChannel.customChannel == AppChannel.CUSTOM_MONITOR) { +// spinnerTitlesList.add(name); +// } +// break; +//// case RecordTypeConstants.TYPE_ROTARY_BRIDGE_6COM: +//// if (AppChannel.customChannel == AppChannel.CUSTOM_6_COM) { +//// spinnerTitlesList.add(name); +//// } +//// break; +// default: +// spinnerTitlesList.add(name); +// break; +// } +// } +// +// ArrayAdapter mSpinnerAdapter = new ArrayAdapter<>(this, +// R.layout.spinner_dropdown_item_my_with_background, android.R.id.text1, +// spinnerTitlesList); +// binding.spinner1.setAdapter(mSpinnerAdapter); +// +// //设置默认记录类型 +// int type = App.instance.getLastRecordBrowseType(); +// Intent intent = getIntent(); +// if (intent != null && intent.hasExtra(KEY_TYPE)) { +// type = intent.getIntExtra(KEY_TYPE, 0); +// } +// int lastType = Math.max(type, 0); +// +// IRecordsUtils utils = recordsUtilsMap.get(lastType); +// int index = 0; +// if (utils != null) { +// String name = utils.name(); +// boolean found = false; +// for (index = 0; index < spinnerTitlesList.size(); index++) { +// if (spinnerTitlesList.get(index).equals(name)) { +// found = true; +// break; +// } +// } +// if (!found) { +// index = 0; +// } +// } +// binding.spinner1.setSelection(index); +// } + +// //里程计算坐标等类型切换监听器 +// AdapterView.OnItemSelectedListener spinnerListener = new AdapterView.OnItemSelectedListener() { +// @Override +// public void onItemSelected(AdapterView parent, View view, int position, long id) { +// String typeString = binding.spinner1.getSelectedItem().toString(); +// Set> entries = recordsUtilsMap.entrySet(); +// for (Map.Entry entry : entries) { +// if (entry.getValue().name().equals(typeString)) { +// currentTypeFromSpinner = entry.getKey(); +// if (currentTypeFromSpinner != RecordTypeConstants.TYPE_TUNNEL_BACK_BREAK && currentTypeFromSpinner != RecordTypeConstants.TYPE_WATER_PIPE_BACK_BREAK) { +// filterUtils.resetTcsType(); +// tv_filter_dcs_type.setVisibility(View.GONE); +// } else { +// tv_filter_dcs_type.setVisibility(View.VISIBLE); +// } +// break; +// } +// } +// +// updateRecyclerView(); +// App.instance.setLastRecordBrowseType(currentTypeFromSpinner); +// SharedPreferences prefs = +// PreferenceManager.getDefaultSharedPreferences(RecordsActivity.this); +// SharedPreferences.Editor editor = prefs.edit(); +// editor.putInt("lastRecordBrowseType", App.instance.getLastRecordBrowseType()); +// editor.apply(); +// } +// +// @Override +// public void onNothingSelected(AdapterView parent) { +// } +// }; @Override public boolean onCreateOptionsMenu(Menu menu) { @@ -332,8 +347,7 @@ public class RecordsActivity extends ColorfulActivity { IRecordsUtils recordsUtils = recordsUtilsMap.get(currentTypeFromSpinner); if (recordsUtils != null) { recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs, - null, - SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID, ""), "", "", + SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID, ""), workId, filterUtils.filterParameter()); // if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) { diff --git a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/IRecordsUtils.java b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/IRecordsUtils.java index 55ea95c..a99184b 100644 --- a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/IRecordsUtils.java +++ b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/IRecordsUtils.java @@ -12,6 +12,9 @@ public interface IRecordsUtils { UserConfig userConfig, String currentProjectId, String currentJobId, String currentRoadId, RecordsActivityFilterParameter parameter); + void update(RecyclerView recyclerView, boolean ascOrder,//asc升序 des,降序 + String currentProjectId, String currentJobId, + RecordsActivityFilterParameter parameter); void clearInWorkerThread(RecordsActivityFilterParameter parameter, Runnable completeCallback); diff --git a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/PointStakeListUtils.java b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/PointStakeListUtils.java index 25999de..3ecd0e6 100644 --- a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/PointStakeListUtils.java +++ b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/util/PointStakeListUtils.java @@ -89,13 +89,79 @@ class PointStakeListUtils extends AbstractListUtils { }); } + @Override + public void update(RecyclerView recyclerView, boolean ascOrder, String currentProjectId, String currentJobId, RecordsActivityFilterParameter parameter) { + String pointName = parameter.road; + String k = parameter.k; + String remarks = parameter.remarks; + Date start = parameter.start; + Date end = parameter.end; + SwipeDeletePagingListLayoutHelper.setup(activity(), activity(), recyclerView, callback, + () -> PointStakeDb.getInstance().rawQueryPagingSource( + Utils.findRecordsListByPointNameRemarksDate( + PointStakeConstants.DB_NAME, currentProjectId, currentJobId, ascOrder, pointName, remarks, start, end)), + new SwipeDeletePagingListLayoutHelper.IViewHolder() { + @Override + public int itemViewType(int position) { + return 0; + } + + @Override + public void onMenuOpen() { + + } + + @Override + public void onMenuClosed() { + + } + + @Override + public boolean isSwipeAble(PointStakeRecord instance) { + return false; + } + + @Override + public RecordItemVH newItemContentVH(@NonNull ViewGroup parent, int viewType) { + return new RecordItemVH(RecyclerviewItemRecordsBinding.inflate(getLayoutInflater())); + } + + @Override + public void doBindContent(RecordItemVH viewHolder, PointStakeRecord record, int position) { + if (record == null) { + return; + } + String remarks = StringUtil.isEmpty(record.remarks) ? "" : record.remarks; + RecyclerViewItemData data = new RecyclerViewItemData(record.id, + record.pointName, + record.roadName, + Util.formatDouble2StringDotAuto(record.designX), + Util.formatDouble2StringDotAuto(record.designY), + Util.formatDouble2StringDotAuto(record.designZ), + getString(R.string.remarks) + ":" + (remarks.length() > 8 ? remarks.substring(0, 8) + "..." : remarks), + DateUtils.toFull(record.createDate)); + viewHolder.doBinder(data); + } + + @Override + public void onItemClicked(int index, PointStakeRecord instance) { + RecordDetailActivity.start(activity(), RecordTypeConstants.TYPE_POINT_STAKE, instance.id); + } + + @Override + public void onDelete(int index, PointStakeRecord instance, SwipeDeletePagingListLayoutHelper.IOnDeleteListener listener) { + requestDelete(activity(), index, instance.id, listener); + } + }); + } + @Override public void clearInWorkerThread(RecordsActivityFilterParameter parameter, Runnable completeCallback) { String projectId = CachedCurrentProject.currentProjectId(); String jobId = CachedCurrentJob.currentJobId(projectId); List records = PointStakeDb.getInstance().rawQueryListData( - Utils.findRecordsListByRoadNameKRemarksDate( - PointStakeConstants.DB_NAME, projectId, jobId, false, parameter.road, parameter.k, parameter.remarks, parameter.start, parameter.end)); + Utils.findRecordsListByPointNameRemarksDate( + PointStakeConstants.DB_NAME, projectId, jobId, false, parameter.road, parameter.remarks, parameter.start, parameter.end)); PointStakeDb.getInstance().delete(records); // activity().runOnUiThread(mProgressDialog::dismiss); if (completeCallback != null) { diff --git a/app/src/main/java/com/project/survey/util/Utils.java b/app/src/main/java/com/project/survey/util/Utils.java index cca66cf..d9c60be 100644 --- a/app/src/main/java/com/project/survey/util/Utils.java +++ b/app/src/main/java/com/project/survey/util/Utils.java @@ -6,6 +6,7 @@ import androidx.sqlite.db.SimpleSQLiteQuery; import com.bingce.data.database.DBQueryConstant; import com.bingce.data.surveyor.BCSurveyWithDeviceInfoRecord; +import com.bingce.utils.RoomFilterBuilder; import com.project.survey.App; import java.util.Date; @@ -45,6 +46,31 @@ public class Utils { } } + public static SimpleSQLiteQuery findRecordsListByPointNameRemarksDate( + String DB_NAME, String projectId, String jobId, boolean ascOrder,//asc升序 des,降序 + String pointName, String remarks, Date start, Date end) { + + StringBuilder stringBuilder = (new StringBuilder("SELECT * FROM ")).append(DB_NAME); + stringBuilder.append(" WHERE ").append(" (BC_DELETE != 1 ) "); + boolean filtered = RoomFilterBuilder.appendEqualsFilter(true, stringBuilder, "project_id", projectId); + filtered = RoomFilterBuilder.appendEqualsFilter(filtered, stringBuilder, "work_id", jobId); + filtered = RoomFilterBuilder.appendLikesFilter(filtered, stringBuilder, "pointName", pointName); + filtered = RoomFilterBuilder.appendLikesFilter(filtered, stringBuilder, "remarks", remarks); + RoomFilterBuilder.appendBetweenDate(filtered, stringBuilder, "create_date", start, end); + RoomFilterBuilder.appendDateOrder(stringBuilder, "create_date", ascOrder); + return new SimpleSQLiteQuery(stringBuilder.toString()); + +// StringBuilder stringBuilder = (new StringBuilder("SELECT * FROM ")).append(DB_NAME); +// stringBuilder.append(" WHERE ").append(" (BC_DELETE != 1 ) "); +// boolean filtered = RoomFilterBuilder.appendEqualsFilter(true, stringBuilder, "work_id", jobId); +// filtered = RoomFilterBuilder.appendLikesFilter(filtered, stringBuilder, "road_name", roadName); +// filtered = RoomFilterBuilder.appendLikesFilter(filtered, stringBuilder, "k", k); +// filtered = RoomFilterBuilder.appendLikesFilter(filtered, stringBuilder, "remarks", remarks); +// RoomFilterBuilder.appendBetweenDate(filtered, stringBuilder, "create_date", start, end); +// RoomFilterBuilder.appendDateOrder(stringBuilder, "create_date", ascOrder); +// return new SimpleSQLiteQuery(stringBuilder.toString()); + } + public static SimpleSQLiteQuery findRecordsListByRoadNameKRemarksDate( String DB_NAME, String projectId, String jobId, boolean ascOrder,//asc升序 des,降序 String roadName, String k, String remarks, Date start, Date end, String tcsType) { diff --git a/app/src/main/res/layout/activity_coordinate_points_library.xml b/app/src/main/res/layout/activity_coordinate_points_library.xml index f63ef36..e1c8050 100644 --- a/app/src/main/res/layout/activity_coordinate_points_library.xml +++ b/app/src/main/res/layout/activity_coordinate_points_library.xml @@ -10,6 +10,7 @@ android:layout_width="match_parent" android:layout_height="50dp" android:elevation="3dp" + android:background="@color/white" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> diff --git a/app/src/main/res/layout/activity_records.xml b/app/src/main/res/layout/activity_records.xml index 785c104..260e322 100644 --- a/app/src/main/res/layout/activity_records.xml +++ b/app/src/main/res/layout/activity_records.xml @@ -6,35 +6,42 @@ android:orientation="vertical"> - - - - - - - - - - + app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +