diff --git a/app/src/main/java/com/community/pocket/data/adapter/ForumSearchAdapter.java b/app/src/main/java/com/community/pocket/data/adapter/ForumSearchAdapter.java new file mode 100644 index 0000000..1078a9e --- /dev/null +++ b/app/src/main/java/com/community/pocket/data/adapter/ForumSearchAdapter.java @@ -0,0 +1,29 @@ +package com.community.pocket.data.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import java.util.List; + +public class ForumSearchAdapter extends ArrayAdapter { + + private List data; + + public ForumSearchAdapter(@NonNull Context context, List data) { + super(context, android.R.layout.simple_list_item_1); + addAll(data); + } + + + public void addAll(List data) { + this.data = data; + clear(); + super.addAll(data); + } + + public boolean containsKey(String name) { + return this.data.contains(name); + } +} diff --git a/app/src/main/java/com/community/pocket/data/main/forum/ForumRequest.java b/app/src/main/java/com/community/pocket/data/main/forum/ForumRequest.java index 3736537..0843139 100644 --- a/app/src/main/java/com/community/pocket/data/main/forum/ForumRequest.java +++ b/app/src/main/java/com/community/pocket/data/main/forum/ForumRequest.java @@ -1,8 +1,14 @@ package com.community.pocket.data.main.forum; +import com.community.pocket.R; +import com.community.pocket.ui.main.ui.forum.post.ForumPostResponse; import com.community.pocket.util.Valid; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + /** * 发表帖子请求接口 * TODO 完善逻辑 @@ -20,7 +26,22 @@ public class ForumRequest { return instance; } - public Valid sendPost(String type, String title, String content, String activeStartTime, String activeEndTime, String activeScore) { + //发送活动贴 + public Valid sendActive(String type, String title, String content, String activeStartTime, String activeEndTime, String activeScore) { + return Valid.ok; + } + + //发送投诉贴 + public Valid sendComplain(String title, String content, String complain) { return Valid.ok; } + + //检索投诉人 + public ForumPostResponse> searchPeople(String name) { + return new ForumPostResponse>().setSuccess(R.string.search_complain_name).setBody(new ArrayList() {{ + add("a" + new Random().nextInt(100000)); + add("a" + new Random().nextInt(100000)); + add("a" + new Random().nextInt(100000)); + }}); + } } diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveFragment.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveFragment.java index 0d5c6e6..b78ed2a 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveFragment.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveFragment.java @@ -6,10 +6,8 @@ import android.text.Editable; import android.text.TextWatcher; import android.text.format.DateFormat; import android.view.View; -import android.widget.Button; import android.widget.EditText; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -19,16 +17,11 @@ import androidx.lifecycle.ViewModelProvider; import com.community.pocket.R; import com.community.pocket.ui.listener.MyTextChange; -import com.community.pocket.ui.main.ui.forum.ForumFragment; import com.community.pocket.util.PropertiesUtil; import org.xutils.view.annotation.ContentView; import org.xutils.view.annotation.ViewInject; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Objects; - /** * 活动贴 */ @@ -90,36 +83,7 @@ public class ForumPostActiveFragment extends ForumPostContent { }); //监控发帖状态 - viewModel.getForumPostResponse().observe(getViewLifecycleOwner(), new Observer() { - @Override - public void onChanged(ForumPostResponse forumPostResponse) { - if (forumPostResponse == null) { - return; - } - - if (forumPostResponse.getSuccess() != null) { - Toast.makeText(getContext(), forumPostResponse.getSuccess(), Toast.LENGTH_LONG).show(); - - ForumFragment forumFragment = getParentFragment(4); - Button button = Objects.requireNonNull(forumFragment.getView()).findViewById(R.id.forum_new); - try { - Method method = ForumFragment.class.getDeclaredMethod("_new", View.class); - method.setAccessible(true); - method.invoke(forumFragment, button); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - } - - if (forumPostResponse.getError() != null) { - Toast.makeText(getContext(), forumPostResponse.getError(), Toast.LENGTH_LONG).show(); - } - } - }); + sendPost(viewModel); TextWatcher textWatcher = new MyTextChange() { @Override diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveViewModel.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveViewModel.java index 34f0aec..780a648 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveViewModel.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostActiveViewModel.java @@ -40,7 +40,7 @@ class ForumPostActiveViewModel extends ForumPostViewModel { //发帖请求状态 void sendPost(String type, String title, String content, String activeStartTime, String activeEndTime, String activeScore) { - Valid valid = forumRequest.sendPost(type, title, content, activeStartTime, activeEndTime, activeScore); + Valid valid = forumRequest.sendActive(type, title, content, activeStartTime, activeEndTime, activeScore); if (valid == Valid.ok) { forumPostResponse.setValue(new ForumPostResponse().setSuccess(R.string.forum_post_ok)); } else { diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainFragment.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainFragment.java index 769b6b6..5eaa82d 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainFragment.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainFragment.java @@ -1,22 +1,34 @@ package com.community.pocket.ui.main.ui.forum.post; +import android.annotation.SuppressLint; import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Log; import android.view.View; -import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import com.community.pocket.R; +import com.community.pocket.data.adapter.ForumSearchAdapter; +import com.community.pocket.ui.listener.MyTextChange; +import org.jetbrains.annotations.NotNull; import org.xutils.view.annotation.ContentView; -import org.xutils.view.annotation.Event; import org.xutils.view.annotation.ViewInject; +import java.lang.reflect.Method; +import java.util.List; import java.util.Objects; /** @@ -32,32 +44,149 @@ public class ForumPostComplainFragment extends ForumPostContent { @ViewInject(R.id.search_name) private AutoCompleteTextView searchName; + //投诉人列表 + private ForumSearchAdapter nameList; + + private ForumPostComplainViewModel viewModel; + + //AutoCompleteTextView的doBeforeTextChanged方法 + private Method doBeforeTextChanged; + //AutoCompleteTextView的doAfterTextChanged方法 + private Method doAfterTextChanged; + @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - initSearch(); + + viewModel = new ViewModelProvider(this, new ForumPostViewModelFactory()).get(ForumPostComplainViewModel.class); + + //监控表单校验状态 + viewModel.getForumPostFormState().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(ForumPostFormState.Complain complain) { + if (complain == null) { + return; + } + if (complain.getTitleError() != null) { + postTitle.setError(getString(complain.getTitleError())); + } + if (complain.getContentError() != null) { + postContent.setError(getString(complain.getContentError())); + } + if (complain.getComplainError() != null) { + searchName.setError(getString(complain.getComplainError())); + } + + postButton.setEnabled(complain.isDataValid()); + } + }); + + //监控发帖状态 + sendPost(viewModel); + + viewModel.getSearchPeople().observe(getViewLifecycleOwner(), new Observer>>() { + @Override + public void onChanged(ForumPostResponse> listForumPostResponse) { + if (listForumPostResponse == null) { + return; + } + + if (listForumPostResponse.getSuccess() != null) { + initSearch(listForumPostResponse.getBody()); + } + + if (listForumPostResponse.getError() != null) { + Toast.makeText(getContext(), R.string.forum_search_people_fail, Toast.LENGTH_LONG).show(); + } + } + }); + + searchName.addTextChangedListener(new MyTextChange() { + @Override + public void afterTextChanged(Editable s) { + if (nameList != null && nameList.containsKey(s.toString())) { + viewModel.complainDataChanged(postTitle.getText().toString(), postContent.getText().toString(), searchName.getText().toString()); + } + + long time = System.currentTimeMillis(); + //输入的字符间隔时间 小于700毫秒 移除以前的handler 延时600毫秒执行 + if (searchName.getTag() != null && time - (Long) searchName.getTag() < 700) { + searchHandler.removeMessages(1); + } + searchHandler.sendEmptyMessageDelayed(1, 600); + searchName.setTag(time); + } + }); + + TextWatcher textWatcher = new MyTextChange() { + @Override + public void afterTextChanged(Editable s) { + viewModel.complainDataChanged(postTitle.getText().toString(), postContent.getText().toString(), searchName.getText().toString()); + } + }; + postTitle.addTextChangedListener(textWatcher); + postContent.addTextChangedListener(textWatcher); + + //发帖操作 + postButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + viewModel.sendComplain(postTitle.getText().toString(), postContent.getText().toString(), searchName.getText().toString()); + } + }); } + //延时搜索的handler + private Handler searchHandler = new Handler(Looper.getMainLooper()) { + public void handleMessage(@NotNull Message msg) { + dealSearchHint(); + } + }; + /** - * 搜索框 + * 根据用户输入的字符去调用接口查询投诉人 */ - @RequiresApi(api = Build.VERSION_CODES.KITKAT) - private void initSearch() { - //TODO 设置数据源数组 - String[] arrays = {"abc", "abcde", "aef2", "fff", "asdfa"}; + private void dealSearchHint() { + String searchContent = searchName.getText().toString(); + if (searchContent.isEmpty()) { + return; + } + viewModel.searchPeople(searchContent); + } - // 设置适配器 - ArrayAdapter adapter = new ArrayAdapter<>(Objects.requireNonNull(this.getContext()), android.R.layout.simple_list_item_1, arrays); - // 将适配器与当前AutoCompleteTextView控件绑定 - searchName.setAdapter(adapter); + @SuppressLint("SoonBlockedPrivateApi") + private void refreshDropList() { + try { + if (doAfterTextChanged == null) { + Class autoCompleteTextView = AutoCompleteTextView.class; + doBeforeTextChanged = autoCompleteTextView.getDeclaredMethod("doBeforeTextChanged"); + doBeforeTextChanged.setAccessible(true); + doAfterTextChanged = autoCompleteTextView.getDeclaredMethod("doAfterTextChanged"); + doAfterTextChanged.setAccessible(true); + } + +// doBeforeTextChanged.invoke(appointment); + doAfterTextChanged.invoke(searchName); + } catch (Exception e) { + Log.e("", e.toString()); + Toast.makeText(getContext(), R.string.load_data_err, Toast.LENGTH_LONG).show(); + } } /** - * 发帖操作 + * 搜索框 */ - @Event(value = R.id.post_button) - private void onButtonClick(View v) { - Toast.makeText(getContext(), R.string.post, Toast.LENGTH_SHORT).show(); + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + private void initSearch(List stringList) { + // 设置适配器 + if (nameList == null) { + nameList = new ForumSearchAdapter(Objects.requireNonNull(getContext()), stringList); + // 将适配器与当前AutoCompleteTextView控件绑定 + searchName.setAdapter(nameList); + } else { + nameList.addAll(stringList); + } + refreshDropList(); } } diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainViewModel.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainViewModel.java index bc02c63..742893f 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainViewModel.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostComplainViewModel.java @@ -1,11 +1,75 @@ package com.community.pocket.ui.main.ui.forum.post; +import androidx.lifecycle.MutableLiveData; + +import com.community.pocket.R; import com.community.pocket.data.main.forum.ForumRequest; +import com.community.pocket.util.Valid; +import com.community.pocket.util.ValidUtil; + +import java.util.List; +/** + * 投诉贴数据管理 + */ class ForumPostComplainViewModel extends ForumPostViewModel { + + //投诉帖表单状态 + private MutableLiveData forumPostFormState = new MutableLiveData<>(); + + //检索投诉人 + private MutableLiveData>> searchPeople = new MutableLiveData<>(); + ForumPostComplainViewModel(ForumRequest forumRequest) { super(forumRequest); } + MutableLiveData getForumPostFormState() { + return forumPostFormState; + } + MutableLiveData>> getSearchPeople() { + return searchPeople; + } + + /** + * 投诉贴表单校验 + */ + void complainDataChanged(String title, String content, String complain) { + if (!ValidUtil.titleValid(title)) { + forumPostFormState.setValue(new ForumPostFormState.Complain(R.string.invalid_title, null, null)); + } else if (!ValidUtil.notesValid(content)) { + forumPostFormState.setValue(new ForumPostFormState.Complain(null, R.string.invalid_post, null)); + } else if (!ValidUtil.usernamevalid(complain)) { + forumPostFormState.setValue(new ForumPostFormState.Complain(null, null, R.string.invalid_username)); + } else { + forumPostFormState.setValue(new ForumPostFormState.Complain(true)); + } + } + + /** + * 发表投诉贴 + * + * @param title 标题 + * @param content 正文 + * @param complain 投诉人 + */ + void sendComplain(String title, String content, String complain) { + Valid valid = forumRequest.sendComplain(title, content, complain); + if (valid == Valid.ok) { + forumPostResponse.setValue(new ForumPostResponse().setSuccess(R.string.forum_post_ok)); + } else { + forumPostResponse.setValue(new ForumPostResponse().setError(R.string.forum_post_fail)); + } + } + + /** + * 模糊检索投诉人列表 + * + * @param name 投诉人 + */ + void searchPeople(String name) { + ForumPostResponse> forumPostResponse = forumRequest.searchPeople(name); + searchPeople.setValue(forumPostResponse); + } } diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostContent.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostContent.java index 33c12c5..c0b47e0 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostContent.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostContent.java @@ -6,18 +6,23 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.lifecycle.Observer; import com.community.pocket.R; import com.community.pocket.ui.BaseFragment; +import com.community.pocket.ui.main.ui.forum.ForumFragment; import com.community.pocket.ui.main.ui.forum.ShowWordCount; import org.xutils.view.annotation.ViewInject; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Objects; /** @@ -68,4 +73,39 @@ abstract class ForumPostContent extends BaseFragment { postButton = parentView.findViewById(R.id.post_button); postContent = contentLayout.findViewById(R.id.post_content); } + + //监控发帖状态 + void sendPost(ForumPostViewModel viewModel) { + viewModel.getForumPostResponse().observe(getViewLifecycleOwner(), new Observer() { + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + @Override + public void onChanged(ForumPostResponse forumPostResponse) { + if (forumPostResponse == null) { + return; + } + + if (forumPostResponse.getSuccess() != null) { + Toast.makeText(getContext(), forumPostResponse.getSuccess(), Toast.LENGTH_LONG).show(); + + ForumFragment forumFragment = getParentFragment(4); + Button button = Objects.requireNonNull(forumFragment.getView()).findViewById(R.id.forum_new); + try { + Method method = ForumFragment.class.getDeclaredMethod("_new", View.class); + method.setAccessible(true); + method.invoke(forumFragment, button); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + + if (forumPostResponse.getError() != null) { + Toast.makeText(getContext(), forumPostResponse.getError(), Toast.LENGTH_LONG).show(); + } + } + }); + } } diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostFormState.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostFormState.java index 0849396..febc662 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostFormState.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostFormState.java @@ -70,4 +70,23 @@ class ForumPostFormState { return activeScore; } } + + static class Complain extends ForumPostFormState { + @Nullable + private Integer complainError; + + Complain(@Nullable Integer titleError, @Nullable Integer contentError, @Nullable Integer complainError) { + super(titleError, contentError); + this.complainError = complainError; + } + + Complain(boolean isDataValid) { + super(isDataValid); + } + + @Nullable + Integer getComplainError() { + return complainError; + } + } } diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostResponse.java b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostResponse.java index 478fd65..31581bc 100644 --- a/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostResponse.java +++ b/app/src/main/java/com/community/pocket/ui/main/ui/forum/post/ForumPostResponse.java @@ -2,18 +2,20 @@ package com.community.pocket.ui.main.ui.forum.post; import androidx.annotation.Nullable; -public class ForumPostResponse { +public class ForumPostResponse { @Nullable private Integer success; @Nullable private Integer error; + private T body; + @Nullable public Integer getSuccess() { return success; } - public ForumPostResponse setSuccess(@Nullable Integer success) { + public ForumPostResponse setSuccess(@Nullable Integer success) { this.success = success; return this; } @@ -23,8 +25,17 @@ public class ForumPostResponse { return error; } - public ForumPostResponse setError(@Nullable Integer error) { + public ForumPostResponse setError(@Nullable Integer error) { this.error = error; return this; } + + T getBody() { + return body; + } + + public ForumPostResponse setBody(T body) { + this.body = body; + return this; + } } diff --git a/app/src/main/res/layout/main/layout/activity_main_menu.xml b/app/src/main/res/layout/main/layout/activity_main_menu.xml index de5cba3..49ba468 100644 --- a/app/src/main/res/layout/main/layout/activity_main_menu.xml +++ b/app/src/main/res/layout/main/layout/activity_main_menu.xml @@ -23,6 +23,7 @@ android:layout_height="0dp" app:defaultNavHost="true" app:layout_constraintBottom_toTopOf="@id/nav_view" + app:layout_constraintHorizontal_bias="0.6" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/titlebar" diff --git a/app/src/main/res/layout/main/layout/forum/layout/forum.xml b/app/src/main/res/layout/main/layout/forum/layout/forum.xml index ca3abee..7d5f4b7 100644 --- a/app/src/main/res/layout/main/layout/forum/layout/forum.xml +++ b/app/src/main/res/layout/main/layout/forum/layout/forum.xml @@ -13,24 +13,34 @@ app:layout_constraintTop_toTopOf="parent" tools:layout_constraintEnd_toEndOf="parent" /> - + app:layout_constraintTop_toBottomOf="@id/titlebar" + tools:layout_constraintBottom_toBottomOf="parent"> + + + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/main/layout/forum/layout/forum_post_complain_fragment.xml b/app/src/main/res/layout/main/layout/forum/layout/forum_post_complain_fragment.xml index 1dcbc46..e277426 100644 --- a/app/src/main/res/layout/main/layout/forum/layout/forum_post_complain_fragment.xml +++ b/app/src/main/res/layout/main/layout/forum/layout/forum_post_complain_fragment.xml @@ -14,6 +14,7 @@ android:id="@+id/search_name" android:layout_width="0dp" android:layout_height="wrap_content" + android:completionThreshold="1" android:hint="@string/search_complain_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/main/layout/forum/layout/forum_post_content.xml b/app/src/main/res/layout/main/layout/forum/layout/forum_post_content.xml index 667c3df..7138c75 100644 --- a/app/src/main/res/layout/main/layout/forum/layout/forum_post_content.xml +++ b/app/src/main/res/layout/main/layout/forum/layout/forum_post_content.xml @@ -17,7 +17,7 @@ 200dp 300dp 200dp + 100dp \ No newline at end of file diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml index 1ea6a67..01d2066 100644 --- a/app/src/main/res/values-en-rUS/strings.xml +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -125,4 +125,6 @@ date error score error date format must be %1s,such as %2s + search OK + search fail \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/dimens.xml b/app/src/main/res/values-zh-rCN/dimens.xml index 7de0751..e6ed384 100644 --- a/app/src/main/res/values-zh-rCN/dimens.xml +++ b/app/src/main/res/values-zh-rCN/dimens.xml @@ -8,4 +8,5 @@ 200dp 300dp 200dp + 100dp \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index df3fbcd..49ade7b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -125,4 +125,6 @@ 日期不合法 信用分必须大于0小于等于%1d 日期格式必须是:%1s,例如:%2s + 检索投诉人成功 + 检索投诉人失败 \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 67abef8..bb166dc 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -11,4 +11,5 @@ 200dp 180dp 16dp + 100dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 149228d..e8ecbd7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -126,6 +126,8 @@ date error score error date format must be %1s,such as %2s + search OK + search fail