完成'我的'页面部细节问题和常见问题 页面
This commit is contained in:
@@ -15,6 +15,7 @@ import com.navinfo.outdoor.fragment.ForgetPawFragment;
|
||||
import com.navinfo.outdoor.fragment.GatheringFragment;
|
||||
import com.navinfo.outdoor.fragment.GradeFragment;
|
||||
import com.navinfo.outdoor.fragment.IssueFragment;
|
||||
import com.navinfo.outdoor.fragment.IssueWebFragment;
|
||||
import com.navinfo.outdoor.fragment.MapDownloadFragment;
|
||||
import com.navinfo.outdoor.fragment.MineFragment;
|
||||
import com.navinfo.outdoor.fragment.PrivilegeFragment;
|
||||
@@ -69,6 +70,7 @@ public class FragmentManagement extends BaseActivity {
|
||||
private AboutFragment aboutFragment;//我的-关于的fragment -23
|
||||
private GatheringFragment gatheringFragment;//我的-用户资料-收款信息的fragment -24
|
||||
private UserAttestationFragment userAttestationFragment;//我的-用户资料-实名认证的fragment -25
|
||||
private IssueWebFragment issueWebFragment;//我的-常见问题-web的fragment -27
|
||||
|
||||
|
||||
@Override
|
||||
@@ -140,7 +142,9 @@ public class FragmentManagement extends BaseActivity {
|
||||
if (userAttestationFragment!=null){//我的-用户资料-实名认证的fragment-25
|
||||
fragmentTransaction.hide(userAttestationFragment);
|
||||
}
|
||||
|
||||
if (issueWebFragment!=null){//我的-常见问题-web的fragment -27
|
||||
fragmentTransaction.hide(issueWebFragment);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -351,6 +355,14 @@ public class FragmentManagement extends BaseActivity {
|
||||
fragmentTransaction.show(userAttestationFragment);
|
||||
}
|
||||
break;
|
||||
case 27://我的-常见问题-web的fragment
|
||||
if (issueWebFragment == null) {
|
||||
issueWebFragment = new IssueWebFragment();
|
||||
fragmentTransaction.add(R.id.frame_layout, issueWebFragment);
|
||||
} else {
|
||||
fragmentTransaction.show(issueWebFragment);
|
||||
}
|
||||
break;
|
||||
}
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
@@ -434,6 +446,9 @@ public class FragmentManagement extends BaseActivity {
|
||||
case 25:
|
||||
userAttestationFragment.onActivityResult(requestCode,resultCode,data);
|
||||
break;
|
||||
case 27:
|
||||
issueWebFragment.onActivityResult(requestCode,resultCode,data);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.navinfo.outdoor.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -16,7 +17,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
||||
private android.widget.EditText etLoginName;
|
||||
private android.widget.EditText etLoginPaw;
|
||||
private TextView tvForgetPaw;
|
||||
private TextView tvLogin;
|
||||
private Button btnLogin;
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
@@ -36,8 +37,8 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
||||
etLoginName = (EditText) findViewById(R.id.et_login_name);
|
||||
etLoginPaw = (EditText) findViewById(R.id.et_login_paw);
|
||||
tvForgetPaw = (TextView) findViewById(R.id.tv_forget_paw);
|
||||
tvLogin = (TextView) findViewById(R.id.tv_login);
|
||||
tvLogin.setOnClickListener(this::onClick);
|
||||
btnLogin = (Button) findViewById(R.id.btn_login);
|
||||
btnLogin.setOnClickListener(this::onClick);
|
||||
tvRegister.setOnClickListener(this);
|
||||
tvForgetPaw.setOnClickListener(this);
|
||||
}
|
||||
@@ -55,8 +56,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
||||
forgetPaw.putExtra("tag", 6);
|
||||
startActivity(forgetPaw);
|
||||
break;
|
||||
case R.id.tv_login:
|
||||
|
||||
case R.id.btn_login:
|
||||
Intent intent = new Intent(this, HomeActivity.class);
|
||||
startActivity(intent);
|
||||
break;
|
||||
|
||||
@@ -137,7 +137,7 @@ public class CapacityMeasureAdapter extends RecyclerView.Adapter<CapacityMeasure
|
||||
//indext内容
|
||||
private String getOptionIndex(int index) {
|
||||
char A = (char) (65 + index);
|
||||
return "选项" + A + ":";
|
||||
return A + ":";
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -39,6 +39,14 @@ public class IssueProblemAdapter extends RecyclerView.Adapter<IssueProblemAdapte
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
holder.tvIssue.setText(issueList.get(position).getTitle());
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (onIssueClick != null) {
|
||||
onIssueClick.onClick(position);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,12 +62,14 @@ public class IssueProblemAdapter extends RecyclerView.Adapter<IssueProblemAdapte
|
||||
tvIssue = itemView.findViewById(R.id.tv_issue_title);
|
||||
}
|
||||
}
|
||||
private interface OnClick{
|
||||
void click(int position);
|
||||
}
|
||||
private OnClick click;
|
||||
|
||||
public void setClick(OnClick click) {
|
||||
this.click = click;
|
||||
public interface OnIssueClick {
|
||||
void onClick(int pos);
|
||||
}
|
||||
|
||||
private OnIssueClick onIssueClick;
|
||||
|
||||
public void setOnIssueClick(OnIssueClick onIssueClick) {
|
||||
this.onIssueClick = onIssueClick;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
package com.navinfo.outdoor.fragment;
|
||||
|
||||
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.jcodecraeer.xrecyclerview.ProgressStyle;
|
||||
import com.jcodecraeer.xrecyclerview.XRecyclerView;
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.activity.FragmentManagement;
|
||||
import com.navinfo.outdoor.adapter.IssueProblemAdapter;
|
||||
import com.navinfo.outdoor.base.BaseFragment;
|
||||
import com.navinfo.outdoor.bean.TaskExplainInfo;
|
||||
@@ -97,7 +100,14 @@ public class IssueFragment extends BaseFragment implements View.OnClickListener
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
issueProblemAdapter.setOnIssueClick(new IssueProblemAdapter.OnIssueClick() {
|
||||
@Override
|
||||
public void onClick(int pos) {
|
||||
Intent iissueWeb = new Intent(getActivity(), FragmentManagement.class);
|
||||
iissueWeb.putExtra("tag",27);
|
||||
startActivity(iissueWeb);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.navinfo.outdoor.fragment;
|
||||
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.base.BaseFragment;
|
||||
|
||||
|
||||
/**
|
||||
* 我的-常见问题-web
|
||||
*/
|
||||
public class IssueWebFragment extends BaseFragment implements View.OnClickListener {
|
||||
|
||||
private ImageView ivIssueWebFinish;
|
||||
private String content = "<div>\n" +
|
||||
"<h2>定义和用法</h2>\n" +
|
||||
"\n" +
|
||||
"<p>\n" +
|
||||
"\t<img src=\"https://exp-picture.cdn.bcebos.com/560be432939c2cf72dff4caa452c5b1b1fde12e1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_jpg%2Fquality%2Cq_80\">\n" +
|
||||
"</p>\n" +
|
||||
"\n" +
|
||||
"<p style=\"color: red; margin-left: 20px\"><style> 标签用于为 HTML 文档定义样式信息。</p>\n" +
|
||||
"\n" +
|
||||
"<p style=\"background-color: lightblue; margin-left: 20px\">在 style 中,您可以规定在浏览器中如何呈现 HTML 文档。</p>\n" +
|
||||
"\n" +
|
||||
"<p style=\"font-family: verdana; margin-left: 20px\">type 属性是必需的,定义 style 元素的内容。唯一可能的值是 \"text/css\"。</p>\n" +
|
||||
"\n" +
|
||||
"<p style=\"font-size: 20px; margin-left: 20px\">style 元素位于 head 部分中。</p>\n" +
|
||||
"</div>";
|
||||
private WebView issueWebView;
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
return R.layout.fragment_issue_web;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
ivIssueWebFinish = (ImageView) findViewById(R.id.iv_issueWeb_finish);
|
||||
issueWebView = (WebView) findViewById(R.id.issue_webView);
|
||||
ivIssueWebFinish.setOnClickListener(this::onClick);
|
||||
issueWebView.getSettings().setBlockNetworkImage(false);
|
||||
WebSettings settings = issueWebView.getSettings();
|
||||
settings.setJavaScriptEnabled(true);
|
||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
|
||||
issueWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
|
||||
}
|
||||
settings.setBuiltInZoomControls(false);
|
||||
content = content.replace("<img", "<img style='max-width: 100%'");
|
||||
issueWebView.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.iv_issueWeb_finish:
|
||||
getActivity().finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,21 @@
|
||||
package com.navinfo.outdoor.fragment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.activity.FragmentManagement;
|
||||
import com.navinfo.outdoor.base.BaseFragment;
|
||||
import com.navinfo.outdoor.util.RegexUtil;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
import java.util.Scanner;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 用户资料的fragment
|
||||
@@ -23,6 +25,12 @@ public class UserDataFragment extends BaseFragment implements View.OnClickListen
|
||||
private Button btnGathering;
|
||||
private Button btnAttestation;
|
||||
private ImageView ivUser;
|
||||
private EditText etRegion;
|
||||
private EditText etPhone;
|
||||
private EditText etQq;
|
||||
private EditText etMailbox;
|
||||
public static Pattern compile = Pattern.compile("/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$/");
|
||||
private Button userSave;
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
@@ -43,8 +51,19 @@ public class UserDataFragment extends BaseFragment implements View.OnClickListen
|
||||
btnAttestation.setOnClickListener(this::onClick);
|
||||
btnGathering = findViewById(R.id.btn_gathering);
|
||||
btnGathering.setOnClickListener(this::onClick);
|
||||
etRegion = (EditText) findViewById(R.id.et_region);
|
||||
etRegion.setOnClickListener(this::onClick);
|
||||
etPhone = (EditText) findViewById(R.id.et_phone);
|
||||
etPhone.setOnClickListener(this::onClick);
|
||||
etQq = (EditText) findViewById(R.id.et_qq);
|
||||
etQq.setOnClickListener(this::onClick);
|
||||
etMailbox = (EditText) findViewById(R.id.et_mailbox);
|
||||
etMailbox.setOnClickListener(this::onClick);
|
||||
userSave = (Button) findViewById(R.id.user_save);
|
||||
userSave.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
@@ -61,8 +80,64 @@ public class UserDataFragment extends BaseFragment implements View.OnClickListen
|
||||
attestationIntent.putExtra("tag", 25);
|
||||
startActivity(attestationIntent);
|
||||
break;
|
||||
case R.id.et_phone:
|
||||
String phoneEt = etPhone.getText().toString().trim();
|
||||
if (TextUtils.isEmpty(phoneEt)) {
|
||||
Toast.makeText(getActivity(), "请输入手机号", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if (!RegexUtil.isPhone(phoneEt)) {
|
||||
Toast.makeText(getActivity(), "手机格式有误", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
break;
|
||||
case R.id.et_qq:
|
||||
qq();
|
||||
break;
|
||||
case R.id.et_mailbox:
|
||||
if (isEmail(etMailbox.getText().toString().trim()) && etMailbox.getText().toString().trim().length() <= 31) {
|
||||
Toast.makeText(getActivity(), "邮箱验证成功", Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(getActivity(), "邮箱格式错误", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
break;
|
||||
case R.id.user_save:
|
||||
final String userphone = etPhone.getText().toString().trim();
|
||||
final String userqq = etQq.getText().toString().trim();
|
||||
final String usermailbox = etMailbox.getText().toString().trim();
|
||||
if (!RegexUtil.isPhone(userphone)) {
|
||||
Toast.makeText(getActivity(), "手机号输入错误", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if (userqq.length() > 11) {
|
||||
Toast.makeText(getActivity(), "QQ号输入错误", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if (usermailbox.length() > 31) {
|
||||
Toast.makeText(getActivity(), "邮箱输入错误", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static String qq() {
|
||||
|
||||
String qq = "23412312";
|
||||
String regex = "[1-9][0-9]{4,11}";
|
||||
boolean flag = qq.matches(regex);
|
||||
if (flag) {
|
||||
System.out.println("输入正确!!");
|
||||
} else {
|
||||
System.out.println("输入正确!!");
|
||||
}
|
||||
return qq();
|
||||
|
||||
}
|
||||
|
||||
public static boolean isEmail(String email) {
|
||||
if (null == email || "".equals(email)) return false;
|
||||
Matcher m = compile.matcher(email);
|
||||
return m.matches();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
27
app/src/main/java/com/navinfo/outdoor/util/RegexUtil.java
Normal file
27
app/src/main/java/com/navinfo/outdoor/util/RegexUtil.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.navinfo.outdoor.util;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 手机号验证
|
||||
*/
|
||||
public class RegexUtil {
|
||||
public static boolean isPhone(String name) {
|
||||
if (TextUtils.isEmpty(name))return false;
|
||||
Pattern p = Pattern.compile("^1[3,4,5,6,7,8,9]\\d{9}$");
|
||||
Matcher m = p.matcher(name);
|
||||
return m.matches();
|
||||
}
|
||||
public static boolean checkPassword(String password) {
|
||||
if (TextUtils.isEmpty(password))return false;
|
||||
//字母+数字。最少6位的正则表达式
|
||||
Pattern p = Pattern.compile("(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}");
|
||||
Matcher m = p.matcher(password);
|
||||
boolean isPassword = m.matches();
|
||||
return isPassword;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user