Android_小账本小结

 登录界面:支持登录、注册以及游客登录,单纯的小账本的话其实用不到这些个登录,单纯为了巩固学习知识。

 

尚未部署到服务器,账号等数据暂时保存在本地数据库中。

 

 Android_小账本小结_第1张图片

 

 

 

 

游客登陆:游客登录会直接跳到主页中,不影响使用。

Android_小账本小结_第2张图片

 

 

 

 

注册和登录时会弹出自定义view的dialog,这时可能会有黑影,这个和默认的主题有关。参考我的这篇博客:https://www.cnblogs.com/XiaoGao128/p/12283918.html

注册:注册时会判断数据库中是否存在此账号,注册完成后直接跳转到主界面。

 Android_小账本小结_第3张图片

 

 

 

 

登录有记住密码和自动登录两个选项。这两个选项通过SharedPreferences实现。具体参考我的这篇博客https://www.cnblogs.com/XiaoGao128/p/12268652.html

 Android_小账本小结_第4张图片

 

 

 

 

LogInActivity.java

 

  1 package com.example.didida_corder;
  2 
  3 import androidx.appcompat.app.AlertDialog;
  4 import androidx.appcompat.app.AppCompatActivity;
  5 
  6 import android.content.Intent;
  7 import android.database.sqlite.SQLiteDatabase;
  8 import android.os.Bundle;
  9 import android.util.Log;
 10 import android.view.LayoutInflater;
 11 import android.view.View;
 12 import android.widget.Button;
 13 import android.widget.CheckBox;
 14 import android.widget.EditText;
 15 import android.widget.Toast;
 16 
 17 import com.example.didida_corder.ToolClass.Login;
 18 import com.example.didida_corder.ToolClass.SPUtils;
 19 import com.example.didida_corder.ToolClass.SQLiteUserChager;
 20 
 21 public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
 22     private Button btn_log,btn_register,btn_defult;
 23     private String nowusername;
 24     @Override
 25     protected void onCreate(Bundle savedInstanceState) {
 26         super.onCreate(savedInstanceState);
 27         setContentView(R.layout.activity_login2);
 28         if (getIntent().getExtras()!=null)
 29             if(getIntent().getExtras().get("refresh")!=null)
 30             autoIn();
 31             autoIn_2();
 32         btn_log=findViewById(R.id.login_btn_log);
 33         btn_register=findViewById(R.id.login_btn_regster);
 34         btn_defult=findViewById(R.id.login_btn_defult);
 35         btn_defult.setOnClickListener(this);
 36         btn_log.setOnClickListener(this);
 37         btn_register.setOnClickListener(this);
 38 
 39     }
 40     public void autoIn(){
 41             Bundle bundle=new Bundle();
 42             bundle.putString("username",getIntent().getExtras().getString("username"));
 43             bundle.putInt("type",1);
 44             bundle.putInt("refresh",0);
 45             Intent intent=new Intent(LoginActivity.this,MainActivity.class);
 46             intent.putExtras(bundle);
 47             startActivity(intent);
 48 
 49         }
 50         public void autoIn_2(){
 51             if ((Integer.parseInt(SPUtils.get(getApplicationContext(),"auto",222).toString())==1)){
 52                 Bundle bundle=new Bundle();
 53                 bundle.putString("username",SPUtils.get(getApplicationContext(),"username","222").toString());
 54                 bundle.putInt("type",0);
 55                 Log.d("autoin_2===========","");
 56                 Intent intent=new Intent(LoginActivity.this,MainActivity.class);
 57                 intent.putExtras(bundle);
 58                 startActivity(intent);
 59             }
 60 
 61 
 62     }
 63     @Override
 64     public void onClick(View v) {
 65         switch (v.getId()){
 66             case R.id.login_btn_regster:{
 67                 final AlertDialog.Builder builder4=new AlertDialog.Builder(this);
 68                 LayoutInflater inflater=LayoutInflater.from(this);
 69                 View view=inflater.inflate(R.layout.layout_register,null);
 70                 Button button=view.findViewById(R.id.adm_btn);
 71                 final EditText editText=view.findViewById(R.id.adm_et);
 72                 final EditText editText1=view.findViewById(R.id.adm_et2);
 73                 final EditText et_confirm=view.findViewById(R.id.adm_et_confirm);
 74                 final EditText et_name=view.findViewById(R.id.adm_name);
 75                 final AlertDialog alertDialog=builder4.setView(view).show();
 76                 alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
 77                 button.setOnClickListener(new View.OnClickListener() {
 78                     @Override
 79                     public void onClick(View v) {
 80                         if(editText.getText().toString().equals("")||editText1.getText().toString().equals("")||et_confirm.getText().toString().equals("")||et_name.getText().toString().equals("")) {
 81                             Toast.makeText(getApplicationContext(), "请补全信息!", Toast.LENGTH_LONG).show();
 82                         }else if (new Login(getApplicationContext()).isInstance(editText.getText().toString())){
 83                             Toast.makeText(getApplicationContext(),"用户名重复!请重新输入!",Toast.LENGTH_SHORT).show();
 84                             editText.setText("");
 85                         } else {
 86                             SPUtils.put(getApplicationContext(),"username",editText.getText().toString()).
 87                                     put(getApplicationContext(),"password",editText1.getText().toString()).
 88                                     put(getApplicationContext(),"name",et_name.getText().toString());
 89 
 90                             SQLiteUserChager sc=new SQLiteUserChager(getApplicationContext(),"Userr",null,1);
 91                             SQLiteDatabase db= sc.getWritableDatabase();
 92                             db.execSQL("insert into user values(?,?,?)",new String[]{et_name.getText().toString(),editText.getText().toString(),editText1.getText().toString()});
 93                             nowusername=editText.getText().toString();
 94                             Bundle bundle=new Bundle();
 95                             bundle.putString("username",nowusername);
 96                             bundle.putInt("type",0);
 97                             Intent intent=new Intent(LoginActivity.this,MainActivity.class);
 98                             intent.putExtras(bundle);
 99                             startActivity(intent);
100                             alertDialog.dismiss();
101                             Toast.makeText(getApplicationContext(), "注册成功!", Toast.LENGTH_SHORT).show();
102                         }
103                     }
104                 });
105                 break;
106             }
107 
108             case R.id.login_btn_log:{
109                 final AlertDialog.Builder builder4=new AlertDialog.Builder(this);
110                 LayoutInflater inflater=LayoutInflater.from(this);
111                 View view=inflater.inflate(R.layout.layout_admin,null);
112                 Button button=view.findViewById(R.id.adm_btn);
113                 final EditText editText=view.findViewById(R.id.adm_et);
114                 final EditText editText1=view.findViewById(R.id.adm_et2);
115                 final CheckBox rb_rember=view.findViewById(R.id.admin_radio_remeber);
116                 final CheckBox rb_auto=view.findViewById(R.id.admin_radio_autoin);
117                 Log.d("----------",SPUtils.get(this,"rember",3).toString());
118                 if (Integer.parseInt(SPUtils.get(this,"rember",3).toString())==1){
119                     editText.setText(SPUtils.get(this,"username","111").toString());
120                     editText1.setText(SPUtils.get(this,"password","111").toString());
121                 }
122                 final AlertDialog alertDialog=builder4.setView(view).show();
123                 alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
124                 button.setOnClickListener(new View.OnClickListener() {
125                     @Override
126                     public void onClick(View v) {
127                         if(editText.getText().toString().equals("")||editText1.getText().toString().equals("")) {
128                             Toast.makeText(getApplicationContext(), "请补全信息!", Toast.LENGTH_LONG).show();
129                         }else {
130                             if (new Login(getApplicationContext()).sentenceLog(editText.getText().toString(),editText1.getText().toString()))
131                             {
132                                 SPUtils.put(getApplicationContext(),"username",editText.getText().toString()).
133                                         put(getApplicationContext(),"password",editText1.getText().toString());
134                                 if (rb_rember.isChecked()) SPUtils.put(getApplicationContext(),"rember",1);
135                                 else SPUtils.put(getApplicationContext(),"rember",0);
136                                 if (rb_auto.isChecked()) SPUtils.put(getApplicationContext(),"auto",1);
137                                 else SPUtils.put(getApplicationContext(),"auto",0);
138                                 Toast.makeText(getApplicationContext(), "登陆成功!", Toast.LENGTH_LONG).show();
139                                 nowusername=editText.getText().toString();
140                                 Bundle bundle=new Bundle();
141                                 bundle.putString("username",nowusername);
142                                 bundle.putInt("type",0);
143                                 Intent intent=new Intent(getApplicationContext(),MainActivity.class);
144                                 intent.putExtras(bundle);
145                                 startActivity(intent);
146                                 alertDialog.dismiss();
147                             }
148                             else Toast.makeText(getApplicationContext(),"用户名或密码错误!",Toast.LENGTH_SHORT).show();
149                         }
150                     }
151                 });
152 
153                 break;
154             }
155             case R.id.login_btn_defult:{
156                 nowusername="defult";
157                 Bundle bundle=new Bundle();
158                 bundle.putString("username",nowusername);
159                 bundle.putInt("type",1);
160                 Intent intent=new Intent(LoginActivity.this,MainActivity.class);
161                 intent.putExtras(bundle);
162                 startActivity(intent);
163                 break;
164             }
165 
166         }
167 
168     }
169 }
View Code

 

 

 

activity_log2.xml

 1 xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:background="@drawable/wolf"
 7     android:orientation="vertical"
 8     android:gravity="center"
 9     tools:context=".LoginActivity">
10     <Button
11         android:id="@+id/login_btn_log"
12         android:layout_width="270dp"
13         android:layout_height="50dp"
14         android:background="@drawable/riple_btn_pink"
15         android:text="登录"
16         android:textColor="#FFFFFF"
17         android:layout_marginBottom="30dp"
18         android:textSize="15dp">Button>
19     <LinearLayout
20         android:layout_width="wrap_content"
21         android:layout_height="wrap_content"
22         android:orientation="horizontal">
23     <Button
24         android:id="@+id/login_btn_regster"
25         android:layout_width="90dp"
26         android:layout_height="wrap_content"
27         android:background="@drawable/riple_btn_pink"
28         android:text="注册"
29         android:textColor="#FFFFFF"
30         android:layout_marginTop="20dp"
31         android:layout_marginRight="60dp"
32         android:textSize="15dp">Button>
33     <Button
34         android:id="@+id/login_btn_defult"
35         android:layout_width="120dp"
36         android:layout_height="wrap_content"
37         android:background="@drawable/riple_btn_pink"
38         android:text="游客登陆"
39         android:textColor="#FFFFFF"
40         android:layout_marginTop="20dp"
41         android:textSize="15dp">Button>
42     LinearLayout>
43 LinearLayout>
View Code

 

 

页面:这个app预计分为四个页面,分别用四个fragment实现。

MainActivity.java

  1 package com.example.didida_corder;
  2 
  3 import androidx.annotation.RequiresApi;
  4 import androidx.appcompat.app.AppCompatActivity;
  5 import androidx.drawerlayout.widget.DrawerLayout;
  6 import androidx.fragment.app.Fragment;
  7 import androidx.fragment.app.FragmentManager;
  8 import androidx.viewpager.widget.ViewPager;
  9 
 10 import android.app.Dialog;
 11 import android.app.FragmentTransaction;
 12 import android.content.Intent;
 13 import android.database.sqlite.SQLiteDatabase;
 14 import android.os.Build;
 15 import android.os.Bundle;
 16 import android.util.Log;
 17 import android.view.Gravity;
 18 import android.view.LayoutInflater;
 19 import android.view.View;
 20 import android.view.Window;
 21 import android.view.WindowManager;
 22 import android.widget.Adapter;
 23 import android.widget.Button;
 24 import android.widget.ImageView;
 25 import android.widget.LinearLayout;
 26 import android.widget.RadioButton;
 27 import android.widget.RadioGroup;
 28 import android.widget.RelativeLayout;
 29 import android.widget.TextView;
 30 
 31 import com.example.didida_corder.ToolClass.SQLiteUserChager;
 32 
 33 import java.util.List;
 34 
 35 public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, RadioGroup.OnCheckedChangeListener,
 36         View.OnClickListener, InOutFragment.IOinput {
 37 
 38     private ViewPager viewPager;
 39     private TextView textView;
 40     private ImageView my_right_menu;
 41     private RadioGroup radioGroup;
 42     private DrawerLayout drawerLayout;
 43     private RadioButton radioButton_crod;
 44     private RadioButton radioButton_inout;
 45     private RadioButton radioButton_myitem;
 46     private int PAGE_NUM = 3,ii=0;
 47     private final int PAGE_CORD = 0;
 48     private final int PAGE_INOUT = 1;
 49     private final int PAGE_MY = 2;
 50     private MyFragPageAdapter myFragPageAdapter;
 51     private MyFragment myFragment;
 52     private FragmentManager fragmentManager;
 53     private String nowusername="defult";
 54     private int type;
 55     private boolean isrefresh=false;
 56     @Override
 57     protected void onCreate(Bundle savedInstanceState) {
 58         super.onCreate(savedInstanceState);
 59         setContentView(R.layout.activity_main);
 60         //从login传入参数
 61         Bundle bundle=getIntent().getExtras();
 62         nowusername=bundle.getString("username");
 63         type=bundle.getInt("type");
 64         Log.d("userame===========",nowusername);
 65         fragmentManager = getSupportFragmentManager();
 66         myFragPageAdapter = new MyFragPageAdapter(getSupportFragmentManager(),nowusername);
 67         myFragment = (MyFragment) fragmentManager.findFragmentById(R.id.fg_left_menu);
 68         myFragment.sentenceAndSet(nowusername,type);
 69         bindViews();
 70         if (bundle.getInt("refresh")!=1){
 71             radioButton_inout.setChecked(true);
 72             radioButton_inout.setBackground(getDrawable(R.drawable.money_2));
 73         }else {
 74             radioButton_crod.setChecked(true);
 75             radioButton_crod.setBackground(getDrawable(R.drawable.hostory_1));
 76         }initLeftMenu();
 77     }
 78 
 79     private void bindViews() {
 80         radioButton_crod = findViewById(R.id.main_rd_cord);
 81         radioButton_inout = findViewById(R.id.main_rd_inout);
 82         radioButton_myitem = findViewById(R.id.main_rd_my);
 83         radioGroup = findViewById(R.id.main_radio_group);
 84         radioGroup.setOnCheckedChangeListener(this);
 85         viewPager = findViewById(R.id.main_viewpager);
 86         viewPager.setAdapter(myFragPageAdapter);
 87         viewPager.addOnPageChangeListener(this);
 88         viewPager.setCurrentItem(PAGE_INOUT);
 89         drawerLayout = findViewById(R.id.main_drawlayout);
 90     }
 91 
 92     public void initLeftMenu() {
 93         my_right_menu = findViewById(R.id.main_leftmenu);
 94         my_right_menu.setOnClickListener(this);
 95     }
 96 
 97     @Override
 98     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
 99 
100     }
101 
102     @Override
103     public void onPageSelected(int position) {
104 
105     }
106 
107     @Override
108     public void onPageScrollStateChanged(int state) {
109         if (state == 2) {
110             switch (viewPager.getCurrentItem()) {
111                 case PAGE_CORD:
112                     radioButton_crod.setChecked(true);
113                     radioButton_inout.setBackground(getDrawable(R.drawable.money));
114                     radioButton_crod.setBackground(getDrawable(R.drawable.hostory_1));
115                     radioButton_myitem.setBackground(getDrawable(R.drawable.society));
116                     //new 可解决翻页时 No adapter attached; skipping layout
117                     viewPager.setAdapter(new MyFragPageAdapter(getSupportFragmentManager(),nowusername));
118                     break;
119                 case PAGE_INOUT:
120                     radioButton_inout.setChecked(true);
121                     radioButton_inout.setBackground(getDrawable(R.drawable.money_2));
122                     radioButton_crod.setBackground(getDrawable(R.drawable.hostory));
123                     radioButton_myitem.setBackground(getDrawable(R.drawable.society));
124                     break;
125                 case PAGE_MY:
126                     radioButton_myitem.setChecked(true);
127                     radioButton_inout.setBackground(getDrawable(R.drawable.money));
128                     radioButton_crod.setBackground(getDrawable(R.drawable.hostory));
129                     radioButton_myitem.setBackground(getDrawable(R.drawable.society_1));
130                     break;
131             }
132         }
133     }
134 
135     @Override
136     public void onCheckedChanged(RadioGroup group, int checkedId) {
137         switch (checkedId) {
138             case R.id.main_rd_cord: {
139                 viewPager.setCurrentItem(PAGE_CORD);
140                 //new 可解决翻页时 No adapter attached; skipping layout
141                 radioButton_inout.setBackground(getDrawable(R.drawable.money));
142                 radioButton_crod.setBackground(getDrawable(R.drawable.hostory_1));
143                 radioButton_myitem.setBackground(getDrawable(R.drawable.society));
144                 Log.d("mainact------username",nowusername);
145                 viewPager.setAdapter(new MyFragPageAdapter(getSupportFragmentManager(),nowusername));
146                 break;
147             }
148             case R.id.main_rd_inout: {
149                 viewPager.setCurrentItem(PAGE_INOUT);
150                 radioButton_inout.setBackground(getDrawable(R.drawable.money_2));
151                 radioButton_crod.setBackground(getDrawable(R.drawable.hostory));
152                 radioButton_myitem.setBackground(getDrawable(R.drawable.society));
153                 break;
154             }
155             case R.id.main_rd_my: {
156                 viewPager.setCurrentItem(PAGE_MY);
157                 radioButton_inout.setBackground(getDrawable(R.drawable.money));
158                 radioButton_crod.setBackground(getDrawable(R.drawable.hostory));
159                 radioButton_myitem.setBackground(getDrawable(R.drawable.society_1));
160                 break;
161             }
162         }
163     }
164 
165     @Override
166     public void onClick(View v) {
167         drawerLayout.openDrawer(Gravity.LEFT);
168     }
169 
170     @RequiresApi(api = Build.VERSION_CODES.N)
171     @Override
172     public void send(String s1, String s2) {
173         Dialog mCameraDialog = new Dialog(this, R.style.BottomDialog);
174         RelativeLayout root = (RelativeLayout) LayoutInflater.from(this).inflate(
175                 R.layout.layout_fragment_calcul, null);
176         CalculFragment calculFragment = new CalculFragment(root,MainActivity.this,s1,s2,nowusername,mCameraDialog);
177         root = calculFragment.bindandset(root);
178         mCameraDialog.setContentView(root);
179         Window dialogWindow = mCameraDialog.getWindow();
180         dialogWindow.setGravity(Gravity.BOTTOM);
181         dialogWindow.setWindowAnimations(R.style.DialogAnimation); // 添加动画
182         WindowManager.LayoutParams lp = dialogWindow.getAttributes(); // 获取对话框当前的参数值
183         lp.x = 0; // 新位置X坐标
184         lp.y = 0; // 新位置Y坐标
185         lp.width = (int) getResources().getDisplayMetrics().widthPixels; // 宽度
186         root.measure(0, 0);
187         lp.height = root.getMeasuredHeight();
188 //        lp.alpha = 9f; // 透明度
189         dialogWindow.setAttributes(lp);
190         mCameraDialog.show();
191 
192 
193     }
194 
195 
196 }
View Code

activity_main.xml

  1 xml version="1.0" encoding="utf-8"?>
  2 <androidx.drawerlayout.widget.DrawerLayout
  3     xmlns:android="http://schemas.android.com/apk/res/android"
  4     xmlns:tools="http://schemas.android.com/tools"
  5     android:id="@+id/main_drawlayout"
  6     android:layout_width="match_parent"
  7     android:layout_height="match_parent">
  8 
  9     <RelativeLayout
 10         android:layout_width="match_parent"
 11         android:layout_height="match_parent"
 12         android:background="#FAFAFA"
 13         android:orientation="horizontal"
 14         tools:context=".MainActivity">
 15         <LinearLayout
 16             android:id="@+id/main_toplinear"
 17             android:layout_width="match_parent"
 18             android:layout_height="50dp"
 19             android:background="#FFFFFF"
 20             android:gravity="center"
 21             android:orientation="horizontal">
 22 
 23             <ImageView
 24                 android:id="@+id/main_leftmenu"
 25                 android:layout_width="35dp"
 26                 android:layout_height="35dp"
 27                 android:layout_marginLeft="27dp"
 28                 android:src="@drawable/sanxian">ImageView>
 29 
 30             <LinearLayout
 31                 android:layout_width="match_parent"
 32                 android:layout_height="70dp"
 33                 android:gravity="center">
 34 
 35                 <TextView
 36                     android:layout_width="wrap_content"
 37                     android:layout_height="wrap_content"
 38                     android:text="滴滴嗒小账本"
 39                     android:textColor="#B3000000"
 40                     android:textSize="20dp">TextView>
 41             LinearLayout>
 42 
 43             <ImageView
 44                 android:layout_width="35dp"
 45                 android:layout_height="35dp"
 46                 android:layout_marginRight="27dp">ImageView>
 47         LinearLayout>
 48 
 49         <View
 50             android:layout_width="match_parent"
 51             android:layout_height="0.5dp"
 52             android:layout_below="@+id/main_toplinear"
 53             android:background="#232">View>
 54 
 55         <View
 56             android:layout_width="match_parent"
 57             android:layout_height="0.5dp"
 58             android:layout_above="@+id/main_radio_group"
 59             android:background="#232">View>
 60 
 61         <RadioGroup
 62             android:id="@+id/main_radio_group"
 63             android:layout_width="match_parent"
 64             android:layout_height="70dp"
 65             android:background="#00F8A4B4"
 66             android:layout_alignParentBottom="true"
 67             android:gravity="center"
 68             android:orientation="horizontal">
 69 
 70             <RadioButton
 71                 android:id="@+id/main_rd_cord"
 72                 android:layout_width="wrap_content"
 73                 android:layout_height="match_parent"
 74                 android:layout_weight="1"
 75                 android:button="@null"
 76                 android:background="@drawable/hostory"
 77                 android:scaleX="0.2"
 78                 android:scaleY="0.3"
 79                 android:gravity="center"
 80                 android:textColor="#5FB1D1"
 81                 android:textSize="25dp">RadioButton>
 82 
 83             <RadioButton
 84                 android:id="@+id/main_rd_inout"
 85                 android:layout_width="wrap_content"
 86                 android:layout_height="match_parent"
 87                 android:layout_weight="1"
 88                 android:button="@null"
 89                 android:gravity="center"
 90                 android:background="@drawable/money"
 91                 android:scaleX="0.2"
 92                 android:scaleY="0.3"
 93                 android:textColor="#5FB1D1"
 94                 android:textSize="25dp">RadioButton>
 95 
 96             <RadioButton
 97                 android:id="@+id/main_rd_my"
 98                 android:layout_width="wrap_content"
 99                 android:layout_height="match_parent"
100                 android:layout_weight="1"
101                 android:button="@null"
102                 android:gravity="center"
103                 android:background="@drawable/society"
104                 android:scaleX="0.2"
105                 android:scaleY="0.3"
106                 android:textColor="#5FB1D1"
107                 android:textSize="25dp">RadioButton>
108         RadioGroup>
109 
110         <androidx.viewpager.widget.ViewPager
111             android:id="@+id/main_viewpager"
112             android:layout_width="match_parent"
113             android:layout_height="match_parent"
114             android:layout_above="@id/main_radio_group"
115             android:layout_below="@+id/main_toplinear">androidx.viewpager.widget.ViewPager>
116     RelativeLayout>
117     <fragment
118         android:id="@+id/fg_left_menu"
119         class="com.example.didida_corder.MyFragment"
120         android:layout_width="wrap_content"
121         android:layout_height="match_parent"
122         android:layout_gravity="start"
123         tools:layout="@layout/layout_myfragment"
124         >fragment>
125 androidx.drawerlayout.widget.DrawerLayout>
View Code

 

  

其中,三个主页面放在一个viewPager中。

InOutFragment(收支页面,记录收支信息)

收支页面分为两个大项十一个小项

其具体布局如下:

 Android_小账本小结_第5张图片

 

 

 

其他十一个小项默认隐藏,在点击相应按钮后相应小项会显示出来:

  Android_小账本小结_第6张图片

 

 

 Android_小账本小结_第7张图片

 

 

 Android_小账本小结_第8张图片

 

 

 

 

 

 

 

 

 

点击小项后会从下方弹出一个输入框,它相当于一个小型计算器,具体参考我的这两篇博客:

https://www.cnblogs.com/XiaoGao128/p/12263125.html

https://www.cnblogs.com/XiaoGao128/p/12245459.html

 Android_小账本小结_第9张图片

 

 

 

 

 

其中点击时间按钮可弹出一个DatePicker设置日期,设置完成后将时间、收支、类型、金额等存储到SQLite中。

 

因为viewPager会复用缓存的Fragment的view,所以数据更新比较麻烦,为了能够在输入完成之后滑到CordFragment时能够正确的显示,我在划过去时new了一个adapter,这样会导致一定的资源浪费,但暂时还没找到相对好的解决方法。

 InOutFragment.java

 

  1 
  2 <androidx.drawerlayout.widget.DrawerLayout
  3     xmlns:android="http://schemas.android.com/apk/res/android"
  4     xmlns:tools="http://schemas.android.com/tools"
  5     android:id="@+id/main_drawlayout"
  6     android:layout_width="match_parent"
  7     android:layout_height="match_parent">
  8 
  9     <RelativeLayout
 10         android:layout_width="match_parent"
 11         android:layout_height="match_parent"
 12         android:background="#FAFAFA"
 13         android:orientation="horizontal"
 14         tools:context=".MainActivity">
 15         <LinearLayout
 16             android:id="@+id/main_toplinear"
 17             android:layout_width="match_parent"
 18             android:layout_height="50dp"
 19             android:background="#FFFFFF"
 20             android:gravity="center"
 21             android:orientation="horizontal">
 22 
 23             <ImageView
 24                 android:id="@+id/main_leftmenu"
 25                 android:layout_width="35dp"
 26                 android:layout_height="35dp"
 27                 android:layout_marginLeft="27dp"
 28                 android:src="@drawable/sanxian">
 29 
 30             <LinearLayout
 31                 android:layout_width="match_parent"
 32                 android:layout_height="70dp"
 33                 android:gravity="center">
 34 
 35                 <TextView
 36                     android:layout_width="wrap_content"
 37                     android:layout_height="wrap_content"
 38                     android:text="滴滴嗒小账本"
 39                     android:textColor="#B3000000"
 40                     android:textSize="20dp">
 41             
 42 
 43             <ImageView
 44                 android:layout_width="35dp"
 45                 android:layout_height="35dp"
 46                 android:layout_marginRight="27dp">
 47         
 48 
 49         <View
 50             android:layout_width="match_parent"
 51             android:layout_height="0.5dp"
 52             android:layout_below="@+id/main_toplinear"
 53             android:background="#232">
 54 
 55         <View
 56             android:layout_width="match_parent"
 57             android:layout_height="0.5dp"
 58             android:layout_above="@+id/main_radio_group"
 59             android:background="#232">
 60 
 61         <RadioGroup
 62             android:id="@+id/main_radio_group"
 63             android:layout_width="match_parent"
 64             android:layout_height="70dp"
 65             android:background="#00F8A4B4"
 66             android:layout_alignParentBottom="true"
 67             android:gravity="center"
 68             android:orientation="horizontal">
 69 
 70             <RadioButton
 71                 android:id="@+id/main_rd_cord"
 72                 android:layout_width="wrap_content"
 73                 android:layout_height="match_parent"
 74                 android:layout_weight="1"
 75                 android:button="@null"
 76                 android:background="@drawable/hostory"
 77                 android:scaleX="0.2"
 78                 android:scaleY="0.3"
 79                 android:gravity="center"
 80                 android:textColor="#5FB1D1"
 81                 android:textSize="25dp">
 82 
 83             <RadioButton
 84                 android:id="@+id/main_rd_inout"
 85                 android:layout_width="wrap_content"
 86                 android:layout_height="match_parent"
 87                 android:layout_weight="1"
 88                 android:button="@null"
 89                 android:gravity="center"
 90                 android:background="@drawable/money"
 91                 android:scaleX="0.2"
 92                 android:scaleY="0.3"
 93                 android:textColor="#5FB1D1"
 94                 android:textSize="25dp">
 95 
 96             <RadioButton
 97                 android:id="@+id/main_rd_my"
 98                 android:layout_width="wrap_content"
 99                 android:layout_height="match_parent"
100                 android:layout_weight="1"
101                 android:button="@null"
102                 android:gravity="center"
103                 android:background="@drawable/society"
104                 android:scaleX="0.2"
105                 android:scaleY="0.3"
106                 android:textColor="#5FB1D1"
107                 android:textSize="25dp">
108         
109 
110         <androidx.viewpager.widget.ViewPager
111             android:id="@+id/main_viewpager"
112             android:layout_width="match_parent"
113             android:layout_height="match_parent"
114             android:layout_above="@id/main_radio_group"
115             android:layout_below="@+id/main_toplinear">
116     
117     <fragment
118         android:id="@+id/fg_left_menu"
119         class="com.example.didida_corder.MyFragment"
120         android:layout_width="wrap_content"
121         android:layout_height="match_parent"
122         android:layout_gravity="start"
123         tools:layout="@layout/layout_myfragment"
124         >
125 
View Code

 

 

 

  layout_inout.xml

  1 xml version="1.0" encoding="utf-8"?>
  2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3     android:orientation="vertical" android:layout_width="match_parent"
  4     android:background="#FFFFFF"
  5     android:layout_height="match_parent">
  6     <LinearLayout
  7         android:layout_marginTop="20dp"
  8         android:layout_width="match_parent"
  9         android:layout_height="90dp"
 10         android:layout_weight="1"
 11         >
 12         <ImageView
 13             android:id="@+id/inout_shuidian"
 14             android:layout_width="70dp"
 15             android:layout_height="70dp"
 16             android:src="@drawable/shuidian_hong"
 17             android:layout_weight="1"
 18             android:visibility="invisible"
 19             >ImageView>
 20         <ImageView
 21             android:id="@+id/inout_canyin"
 22             android:layout_width="70dp"
 23             android:layout_height="70dp"
 24             android:src="@drawable/cnayin_hong"
 25             android:layout_weight="1"
 26             android:visibility="invisible"
 27             >ImageView>
 28     LinearLayout>
 29     <LinearLayout
 30         android:layout_width="match_parent"
 31         android:layout_height="90dp"
 32         android:layout_weight="1"
 33         >
 34         <ImageView
 35             android:id="@+id/inout_yiwu"
 36             android:layout_width="70dp"
 37             android:layout_height="70dp"
 38             android:src="@drawable/yiwu_hong"
 39             android:layout_weight="1"
 40             android:visibility="invisible"
 41             >ImageView>
 42         <ImageView
 43             android:id="@+id/inout_in"
 44             android:layout_width="70dp"
 45             android:layout_height="70dp"
 46             android:src="@drawable/zhichu_hei"
 47             android:layout_weight="1"
 48             >ImageView>
 49         <ImageView
 50             android:id="@+id/inout_qita"
 51             android:layout_width="70dp"
 52             android:layout_height="70dp"
 53             android:src="@drawable/qita_hong"
 54             android:layout_weight="1"
 55             android:visibility="invisible"
 56             >ImageView>
 57     LinearLayout>
 58     <LinearLayout
 59         android:layout_width="match_parent"
 60         android:layout_height="90dp"
 61         android:layout_weight="1"
 62         >
 63         <ImageView
 64             android:id="@+id/inout_chuxing"
 65             android:layout_width="70dp"
 66             android:layout_height="70dp"
 67             android:src="@drawable/jiaotong_hong"
 68             android:layout_weight="1"
 69             android:visibility="invisible"
 70             >ImageView>
 71         <ImageView
 72             android:id="@+id/inout_dianzi"
 73             android:layout_width="70dp"
 74             android:layout_height="70dp"
 75             android:src="@drawable/dianzi_hong"
 76             android:layout_weight="1"
 77             android:visibility="invisible"
 78             >ImageView>
 79         <ImageView
 80             android:id="@+id/inout_yule"
 81             android:layout_width="70dp"
 82             android:layout_height="70dp"
 83             android:src="@drawable/yule_hong"
 84             android:layout_weight="1"
 85             android:visibility="invisible"
 86             >ImageView>
 87     LinearLayout>
 88     <LinearLayout
 89         android:layout_width="match_parent"
 90         android:layout_height="90dp"
 91         android:layout_weight="1"
 92         >
 93         <ImageView
 94             android:id="@+id/inout_gongzi"
 95             android:layout_width="70dp"
 96             android:layout_height="70dp"
 97             android:src="@drawable/gongzi_hong"
 98             android:layout_weight="1"
 99             android:visibility="invisible"
100             >ImageView>
101         <ImageView
102             android:id="@+id/inout_out"
103             android:layout_width="70dp"
104             android:layout_height="70dp"
105             android:src="@drawable/shouru_hei"
106             android:layout_weight="1"
107             >ImageView>
108         <ImageView
109             android:id="@+id/inout_jianqian"
110             android:layout_width="70dp"
111             android:layout_height="70dp"
112             android:src="@drawable/jiandao_hong"
113             android:layout_weight="1"
114             android:visibility="invisible"
115             >ImageView>
116     LinearLayout>
117     <LinearLayout
118         android:layout_width="match_parent"
119         android:layout_height="90dp"
120         android:layout_weight="1"
121         >
122         <ImageView
123             android:id="@+id/inout_jianzhi"
124             android:layout_width="70dp"
125             android:layout_height="70dp"
126             android:src="@drawable/jianzhi_hong"
127             android:layout_weight="1"
128             android:visibility="invisible"
129             >ImageView>
130         <ImageView
131             android:id="@+id/inout_hongbao"
132             android:layout_width="70dp"
133             android:layout_height="70dp"
134             android:src="@drawable/hongbao_hong"
135             android:layout_weight="1"
136             android:visibility="invisible"
137             >ImageView>
138     LinearLayout>
139 
140 
141 
142 
143 
144 
145 
146 LinearLayout>
147  
View Code

 

下方弹出的输入页面: 

CalculFragment

  1 package com.example.didida_corder;
  2 
  3 import android.app.AlertDialog;
  4 import android.app.DatePickerDialog;
  5 import android.app.Dialog;
  6 import android.content.Context;
  7 import android.icu.util.Calendar;
  8 import android.icu.util.ChineseCalendar;
  9 import android.os.Build;
 10 import android.os.Bundle;
 11 import android.util.Log;
 12 import android.view.LayoutInflater;
 13 import android.view.View;
 14 import android.view.ViewGroup;
 15 import android.widget.Button;
 16 import android.widget.DatePicker;
 17 import android.widget.EditText;
 18 import android.widget.RelativeLayout;
 19 import android.widget.TextView;
 20 import android.widget.Toast;
 21 
 22 import androidx.annotation.NonNull;
 23 import androidx.annotation.Nullable;
 24 import androidx.annotation.RequiresApi;
 25 import androidx.fragment.app.Fragment;
 26 
 27 //import java.util.Calendar;
 28 import com.example.didida_corder.ToolClass.Login;
 29 
 30 import java.util.Date;
 31 import java.util.zip.Inflater;
 32 
 33 import static java.lang.Math.sqrt;
 34 
 35 public class CalculFragment implements InOutFragment.IOinput{
 36     private String inout,type,number,date,info;
 37     private Button btn_0, btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8, btn_9, btn_add,
 38             btn_del, btn_mul, btn_ac, btn_sub, btn_equal, btn_divide, btn_date,
 39             btn_point;
 40     private TextView tv_cord, tv_calcul;
 41     private EditText et_tell;
 42     private double init = 0;//当前输入数据
 43     private char calcul = '#';//运算符
 44     private double nowsum = 0;//当前运算结果
 45     private int pointnum = 0;//小数点输入次数
 46     private RelativeLayout root;
 47     private Context context;
 48     private String username;
 49     private Dialog dialog;
 50     boolean isaheadchar = false, isnowpoint = false, isaheadequal = false, isaheadsqr = false;
 51 
 52     //isaheadchar: 是否输入过运算符
 53     //isnowpoint:小数点状态
 54     //isaheadequal:前一个运算符是否为=
 55     //isaheadsqr:前一个运算符是否为平方,主要为setText方便而设置
 56     @RequiresApi(api = Build.VERSION_CODES.N)
 57     public CalculFragment(RelativeLayout root, Context context,String inout,String type,String username,Dialog dialog) {
 58         this.root = root;
 59         this.context = context;
 60         this.inout=inout;
 61         this.type=type;
 62         this.dialog=dialog;
 63         Log.d("=========clacu",username);
 64         this.username=username;
 65         bindandset(this.root);
 66     }
 67 
 68     @RequiresApi(api = Build.VERSION_CODES.N)
 69     public RelativeLayout bindandset(View view) {
 70         btn_0 = root.findViewById(R.id.calcul_btn_0);
 71         btn_1 = root.findViewById(R.id.calcul_btn_1);
 72         btn_2 = root.findViewById(R.id.calcul_btn_2);
 73         btn_3 = root.findViewById(R.id.calcul_btn_3);
 74         btn_4 = root.findViewById(R.id.calcul_btn_4);
 75         btn_5 = root.findViewById(R.id.calcul_btn_5);
 76         btn_6 = root.findViewById(R.id.calcul_btn_6);
 77         btn_7 = root.findViewById(R.id.calcul_btn_7);
 78         btn_8 = root.findViewById(R.id.calcul_btn_8);
 79         btn_9 = root.findViewById(R.id.calcul_btn_9);
 80         btn_date = root.findViewById(R.id.calcul_btn_date);
 81         btn_point = root.findViewById(R.id.calcul_btn_point);
 82         btn_sub = root.findViewById(R.id.calcul_btn_sub);
 83         btn_ac = root.findViewById(R.id.calcul_btn_ac);
 84         btn_add = root.findViewById(R.id.calcul_btn_add);
 85         et_tell=root.findViewById(R.id.tv_tell);
 86         btn_equal = root.findViewById(R.id.calcul_btn_equal);
 87         btn_del = root.findViewById(R.id.calcul_btn_del);
 88         btn_divide = root.findViewById(R.id.calcul_btn_divide);
 89         btn_mul = root.findViewById(R.id.calcul_btn_multiply);
 90         tv_calcul = root.findViewById(R.id.tv_calcul);
 91         tv_cord = root.findViewById(R.id.tv_cord);
 92         tv_calcul.setText("");
 93         tv_cord.setText("");
 94         btn_0.setOnClickListener(new View.OnClickListener() {
 95             @Override
 96             public void onClick(View v) {
 97                 if (isaheadequal || isaheadchar) {
 98                     btn_equal.setText("=");
 99                 } else tv_calcul.setText(tv_calcul.getText() + "0");
100                 init = Double.parseDouble((String) tv_calcul.getText());
101                 isaheadequal = false;
102                 isaheadchar = false;
103             }
104         });
105         btn_1.setOnClickListener(new View.OnClickListener() {
106             @Override
107             public void onClick(View v) {
108                 if (isaheadequal || isaheadchar) {
109                     btn_equal.setText("=");
110                     tv_calcul.setText("1");
111                 } else tv_calcul.setText(tv_calcul.getText() + "1");
112                 init = Double.parseDouble((String) tv_calcul.getText());
113                 isaheadequal = false;
114                 isaheadchar = false;
115             }
116         });
117         btn_2.setOnClickListener(new View.OnClickListener() {
118             @Override
119             public void onClick(View v) {
120                 if (isaheadequal || isaheadchar) {
121                     btn_equal.setText("=");
122                     tv_calcul.setText("2");
123                 } else tv_calcul.setText(tv_calcul.getText() + "2");
124                 init = Double.parseDouble((String) tv_calcul.getText());
125                 isaheadequal = false;
126                 isaheadchar = false;
127             }
128         });
129         btn_3.setOnClickListener(new View.OnClickListener() {
130             @Override
131             public void onClick(View v) {
132                 if (isaheadequal || isaheadchar) {
133                     btn_equal.setText("=");
134                     tv_calcul.setText("3");
135                 } else tv_calcul.setText(tv_calcul.getText() + "3");
136                 init = Double.parseDouble((String) tv_calcul.getText());
137                 isaheadequal = false;
138                 isaheadchar = false;
139             }
140         });
141         btn_4.setOnClickListener(new View.OnClickListener() {
142             @Override
143             public void onClick(View v) {
144                 if (isaheadequal || isaheadchar) {
145                     btn_equal.setText("=");
146                     tv_calcul.setText("4");
147                 } else tv_calcul.setText(tv_calcul.getText() + "4");
148                 init = Double.parseDouble((String) tv_calcul.getText());
149                 isaheadequal = false;
150                 isaheadchar = false;
151             }
152         });
153         btn_5.setOnClickListener(new View.OnClickListener() {
154             @Override
155             public void onClick(View v) {
156                 if (isaheadequal || isaheadchar) {
157                     btn_equal.setText("=");
158                     tv_calcul.setText("5");
159                 } else tv_calcul.setText(tv_calcul.getText() + "5");
160                 init = Double.parseDouble((String) tv_calcul.getText());
161                 isaheadequal = false;
162                 isaheadchar = false;
163             }
164         });
165         btn_6.setOnClickListener(new View.OnClickListener() {
166             @Override
167             public void onClick(View v) {
168                 if (isaheadequal || isaheadchar) {
169                     btn_equal.setText("=");
170                     tv_calcul.setText("6");
171                 } else tv_calcul.setText(tv_calcul.getText() + "6");
172                 init = Double.parseDouble((String) tv_calcul.getText());
173                 isaheadequal = false;
174                 isaheadchar = false;
175             }
176         });
177         btn_7.setOnClickListener(new View.OnClickListener() {
178             @Override
179             public void onClick(View v) {
180                 if (isaheadequal || isaheadchar) {
181                     btn_equal.setText("=");
182                     tv_calcul.setText("7");
183                 } else tv_calcul.setText(tv_calcul.getText() + "7");
184                 init = Double.parseDouble((String) tv_calcul.getText());
185                 isaheadequal = false;
186                 isaheadchar = false;
187             }
188         });
189         btn_8.setOnClickListener(new View.OnClickListener() {
190             @Override
191             public void onClick(View v) {
192                 if (isaheadequal || isaheadchar) {
193                     btn_equal.setText("=");
194                     tv_calcul.setText("8");
195                 } else tv_calcul.setText(tv_calcul.getText() + "8");
196                 init = Double.parseDouble((String) tv_calcul.getText());
197                 isaheadequal = false;
198                 isaheadchar = false;
199             }
200         });
201         btn_9.setOnClickListener(new View.OnClickListener() {
202             @Override
203             public void onClick(View v) {
204                 if (isaheadequal || isaheadchar) {
205                     btn_equal.setText("=");
206                     tv_calcul.setText("9");
207                 } else tv_calcul.setText(tv_calcul.getText() + "9");
208                 init = Double.parseDouble((String) tv_calcul.getText());
209                 isaheadequal = false;
210                 isaheadchar = false;
211             }
212         });
213         btn_add.setOnClickListener(new View.OnClickListener() {
214             @Override
215             public void onClick(View v) {
216 
217                 switch (calcul) {
218                     case '+': {
219                         nowsum += init;
220                         break;
221                     }
222                     case '-': {
223                         nowsum -= init;
224 
225                         break;
226                     }
227                     case '*': {
228                         nowsum *= init;
229 
230                         break;
231                     }
232                     case '/': {
233                         if (init != 0) {
234                             nowsum /= init;
235                         } else
236                             break;
237                     }
238                     default: {
239                         nowsum += init;
240                     }
241                 }
242                 if (isaheadchar) {
243                     if (!isaheadsqr)
244                         tv_cord.setText(tv_cord.getText().subSequence(0, tv_cord.getText().length() - 1));
245                     calcul = '+';
246 
247                 }
248                 if (!isaheadequal) {
249                     if (!isaheadchar)
250                         tv_cord.setText(tv_cord.getText() + "" + init + "+");
251                     else tv_cord.setText(tv_cord.getText() + "+");
252                     tv_calcul.setText("" + nowsum);
253                 } else {
254                     tv_cord.setText("" + nowsum + "+");
255                     tv_calcul.setText("" + nowsum);
256                 }
257                 calcul = '+';
258                 init = 0;
259                 isaheadequal = false;
260                 isaheadchar = true;
261                 isaheadsqr = false;
262                 isnowpoint = false;
263                 pointnum = 0;
264             }
265         });
266         btn_sub.setOnClickListener(new View.OnClickListener() {
267             @Override
268             public void onClick(View v) {
269                 if (isaheadequal) {
270                     tv_cord.setText("");
271                 }
272                 switch (calcul) {
273                     case '+': {
274                         nowsum += init;
275 
276                         break;
277                     }
278                     case '-': {
279                         nowsum -= init;
280 
281                         break;
282                     }
283                     case '*': {
284                         nowsum *= init;
285                         break;
286                     }
287                     case '/': {
288                         if (init != 0) {
289                             nowsum /= init;
290                         } else
291                             break;
292                     }
293                     case '士': {
294                         nowsum *= -1;
295                         break;
296                     }
297                     case '%': {
298                         nowsum %= init;
299                         break;
300                     }
301                     default: {
302                         nowsum += init;
303                     }
304                 }
305                 if (isaheadchar) {
306                     if (!isaheadsqr)
307                         tv_cord.setText(tv_cord.getText().subSequence(0, tv_cord.getText().length() - 1));
308                     calcul = '-';
309                 }
310                 if (!isaheadequal) {
311                     if (!isaheadchar)
312                         tv_cord.setText(tv_cord.getText() + "" + init + "-");
313                     else tv_cord.setText(tv_cord.getText() + "-");
314                     tv_calcul.setText("" + nowsum);
315                 } else {
316                     tv_cord.setText("" + nowsum + "-");
317                     tv_calcul.setText("" + nowsum);
318                 }
319                 calcul = '-';
320                 init = 0;
321                 isaheadequal = false;
322                 isaheadchar = true;
323                 isaheadsqr = false;
324                 isnowpoint = false;
325                 pointnum = 0;
326             }
327         });
328         btn_mul.setOnClickListener(new View.OnClickListener() {
329             @Override
330             public void onClick(View v) {
331                 if (isaheadequal) {
332                     tv_cord.setText("");
333                 }
334                 switch (calcul) {
335                     case '+': {
336                         nowsum += init;
337                         break;
338                     }
339                     case '-': {
340                         nowsum -= init;
341                         break;
342                     }
343                     case '*': {
344                         nowsum *= init;
345                         break;
346                     }
347                     case '/': {
348                         if (init != 0) {
349                             nowsum /= init;
350                         } else
351                             break;
352                     }
353                     case '士': {
354                         nowsum *= -1;
355                         break;
356                     }
357                     case '%': {
358                         nowsum %= init;
359                         break;
360                     }
361                     default: {
362                         nowsum += init;
363                     }
364                 }
365                 //if ptr calcul is calcul change it
366                 if (isaheadchar) {
367                     if (!isaheadsqr)
368                         tv_cord.setText(tv_cord.getText().subSequence(0, tv_cord.getText().length() - 1));
369                     calcul = '*';
370                 }
371                 if (!isaheadequal) {
372                     if (!isaheadchar)
373                         tv_cord.setText(tv_cord.getText() + "" + init + "×");
374                     else tv_cord.setText(tv_cord.getText() + "×");
375                     tv_calcul.setText("" + nowsum);
376                 } else {
377                     tv_cord.setText("" + nowsum + "×");
378                     tv_calcul.setText("" + nowsum);
379                 }
380                 calcul = '*';
381                 init = 0;
382                 isaheadchar = true;
383                 isaheadequal = false;
384                 isaheadsqr = false;
385                 isnowpoint = false;
386                 pointnum = 0;
387             }
388         });
389         btn_divide.setOnClickListener(new View.OnClickListener() {
390             @Override
391             public void onClick(View v) {
392                 if (isaheadequal) {
393                     tv_cord.setText("");
394                 }
395                 switch (calcul) {
396                     case '+': {
397                         nowsum += init;
398                         break;
399                     }
400                     case '-': {
401                         nowsum -= init;
402                         break;
403                     }
404                     case '*': {
405                         nowsum *= init;
406                         break;
407                     }
408                     case '/': {
409                         if (init != 0) {
410                             nowsum /= init;
411                         } else
412                             break;
413                     }
414                     case '士': {
415                         nowsum *= -1;
416                         break;
417                     }
418                     case '%': {
419                         nowsum %= init;
420                         break;
421                     }
422                     default: {
423                         nowsum += init;
424                     }
425                 }
426                 if (isaheadchar) {
427                     if (!isaheadsqr)
428                         tv_cord.setText(tv_cord.getText().subSequence(0, tv_cord.getText().length() - 1));
429                     calcul = '/';
430                 }
431                 if (!isaheadequal) {
432                     if (!isaheadchar)
433                         tv_cord.setText(tv_cord.getText() + "" + init + "÷");
434                     else tv_cord.setText(tv_cord.getText() + "÷");
435                     tv_calcul.setText("" + nowsum);
436                 } else {
437 
438                     tv_cord.setText("" + nowsum + "÷");
439                     tv_calcul.setText("" + nowsum);
440                 }
441                 calcul = '/';
442                 init = 0;
443                 isaheadequal = false;
444                 isaheadchar = true;
445                 isaheadsqr = false;
446                 isnowpoint = false;
447                 pointnum = 0;
448             }
449         });
450         btn_point.setOnClickListener(new View.OnClickListener() {
451             @Override
452             public void onClick(View v) {
453                 tv_calcul.setText(tv_calcul.getText() + ".");
454                 isnowpoint = true;
455             }
456         });
457         btn_equal.setOnClickListener(new View.OnClickListener() {
458             @Override
459             public void onClick(View v) {
460                 if (isaheadequal) {
461                     tv_cord.setText("");
462                 }
463                 switch (calcul) {
464                     case '+': {
465                         nowsum += init;
466                         break;
467                     }
468                     case '-': {
469                         nowsum -= init;
470                         break;
471                     }
472                     case '*': {
473                         nowsum *= init;
474 
475                         break;
476                     }
477                     case '/': {
478                         if (init != 0) {
479                             nowsum /= init;
480                         } else
481                             break;
482                     }
483                     case '士': {
484                         nowsum *= -1;
485                         break;
486                     }
487                     case '%': {
488                         nowsum %= init;
489                         break;
490                     }
491                     default: {
492                         nowsum = init;
493                     }
494                 }
495                 if (!isaheadsqr)
496                     tv_cord.setText(tv_cord.getText() + "" + init + "=");
497                 else tv_cord.setText(tv_cord.getText() + "=");
498                 tv_calcul.setText("" + nowsum);
499                 calcul = '#';
500                 init = 0;
501 
502                 if (btn_equal.getText().toString().equals("完成")){
503                     new Login(context).dataIn(username,inout,type,tv_calcul.getText().toString(),btn_date.getText().toString(),et_tell.getText().toString());
504                     dialog.dismiss();
505                     Log.d("=-=-=-=----------------","传输完成"+username);
506                 }
507                 btn_equal.setText("完成");
508                 isaheadequal = true;
509                 isaheadsqr = false;
510                 isnowpoint = false;
511                 pointnum = 0;
512             }
513         });
514         btn_ac.setOnClickListener(new View.OnClickListener() {
515             @Override
516             public void onClick(View v) {
517                 tv_calcul.setText("");
518                 tv_cord.setText("");
519                 calcul = '#';
520                 init = 0;
521                 nowsum = 0;
522                 isaheadchar = false;
523                 isnowpoint = false;
524                 isaheadequal = false;
525                 isaheadsqr = false;
526                 pointnum = 0;
527             }
528         });
529         btn_del.setOnClickListener(new View.OnClickListener() {
530             @Override
531             public void onClick(View v) {
532                 if (tv_calcul.getText().length() != 0)
533                     tv_calcul.setText(tv_calcul.getText().subSequence(0, tv_calcul.getText().length() - 1));
534             }
535         });
536         final Calendar calendar = Calendar.getInstance();
537         String time = "" + calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH);
538         btn_date.setText(time);
539         btn_date.setOnClickListener(new View.OnClickListener() {
540             @Override
541             public void onClick(View v) {
542                 Calendar calendar1=ChineseCalendar.getInstance();
543                 DatePickerDialog datePickerDialog=new DatePickerDialog(context, AlertDialog.THEME_HOLO_LIGHT,
544                         new DatePickerDialog.OnDateSetListener() {
545                     @Override
546                     public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
547                         btn_date.setText(""+year+"/"+(month+1)+"/"+dayOfMonth);
548                     }
549                 }, calendar1.get(Calendar.YEAR), calendar1.get(Calendar.MONTH), calendar1.get(Calendar.DAY_OF_MONTH));
550                 datePickerDialog.show();
551             }
552         });
553         return (RelativeLayout) view;
554     }
555 
556     @Override
557     public void send(String s1, String s2) {
558         this.inout=s1;
559         this.type=s2;
560         Log.d("inout=================","完成");
561     }
562 
563 }
View Code

 

layout_fragment_calcul

  1 xml version="1.0" encoding="utf-8"?>
  2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3     xmlns:tools="http://schemas.android.com/tools"
  4     android:layout_width="match_parent"
  5     android:layout_height="500dp"
  6    >
  7     <EditText
  8         android:id="@+id/tv_tell"
  9         android:layout_width="match_parent"
 10         android:layout_height="50dp"
 11         android:background="@drawable/btn_nocornor_3"
 12         android:textColor="#212"
 13         android:gravity="right"
 14         android:hint="备注"
 15         android:textColorHint="#B1A1A1"
 16         android:textSize="30dp">EditText>
 17     <TextView
 18         android:id="@+id/tv_cord"
 19         android:layout_width="match_parent"
 20         android:layout_height="50dp"
 21         android:layout_below="@id/tv_tell"
 22         android:background="@drawable/riple_btn_nocorner_3"
 23         android:gravity="right"
 24         android:textColor="#212"
 25         android:hint="0"
 26         android:textColorHint="#B1A1A1"
 27         android:textSize="30dp">TextView>
 28 
 29     <TextView
 30         android:id="@+id/tv_calcul"
 31         android:layout_width="match_parent"
 32         android:layout_height="50dp"
 33         android:layout_below="@+id/tv_cord"
 34         android:background="@drawable/riple_btn_nocorner_3"
 35         android:textColor="#212"
 36         android:gravity="right"
 37         android:hint="支出"
 38         android:textColorHint="#B1A1A1"
 39         android:textSize="30dp">TextView>
 40     <View
 41         android:layout_width="match_parent"
 42         android:layout_height="0.3dp"
 43         android:background="#212"
 44         >View>
 45     <LinearLayout
 46         android:layout_width="match_parent"
 47         android:layout_height="match_parent"
 48         android:layout_below="@id/tv_calcul"
 49         android:orientation="vertical"
 50         android:gravity="center">
 51         <LinearLayout
 52             android:layout_width="match_parent"
 53             android:layout_height="0dp"
 54             android:layout_weight="1"
 55             android:orientation="horizontal"
 56 
 57             ><Button
 58             android:id="@+id/calcul_btn_ac"
 59             android:layout_width="140dp"
 60             android:layout_height="match_parent"
 61             android:layout_marginTop="0dp"
 62             android:background="@drawable/riple_btn_nocorner_3"
 63             android:fontFamily="宋体"
 64             android:text="AC"
 65             android:textSize="20dp"
 66             android:layout_weight="2"
 67             android:textColor="#169FDF"
 68             >Button>
 69 
 70             <Button
 71                 android:id="@+id/calcul_btn_date"
 72                 android:layout_width="210dp"
 73                 android:layout_height="match_parent"
 74                 android:layout_marginTop="0dp"
 75                 android:background="@drawable/riple_btn_nocorner_3"
 76                 android:fontFamily="宋体"
 77                 android:text="日期"
 78                 android:textAllCaps="false"
 79                 android:layout_weight="3"
 80                 android:textColor="#169FDF"
 81                 android:textSize="20dp">Button>
 82         LinearLayout>
 83         <LinearLayout
 84             android:layout_width="match_parent"
 85             android:layout_weight="1"
 86             android:layout_height="0dp"
 87             android:orientation="horizontal"
 88             >
 89             <Button
 90                 android:id="@+id/calcul_btn_1"
 91                 android:layout_width="70dp"
 92                 android:layout_height="match_parent"
 93                 android:layout_marginTop="0dp"
 94                 android:background="@drawable/riple_btn_nocorner_3"
 95                 android:fontFamily="宋体"
 96                 android:text="1"
 97                 android:layout_weight="1"
 98                 android:textColor="#169FDF"
 99                 android:textSize="25dp">Button>
100             <Button
101                 android:id="@+id/calcul_btn_2"
102                 android:layout_width="70dp"
103                 android:layout_height="match_parent"
104                 android:layout_marginTop="0dp"
105                 android:background="@drawable/riple_btn_nocorner_3"
106                 android:text="2"
107                 android:layout_weight="1"
108                 android:textSize="25dp"
109                 android:textColor="#169FDF"
110                 android:fontFamily="宋体">Button>
111             <Button
112                 android:id="@+id/calcul_btn_3"
113                 android:layout_width="70dp"
114                 android:layout_height="match_parent"
115                 android:layout_marginTop="0dp"
116                 android:background="@drawable/riple_btn_nocorner_3"
117                 android:text="3"
118                 android:textSize="25dp"
119                 android:textColor="#169FDF"
120                 android:layout_weight="1"
121                 android:fontFamily="宋体">Button>
122 
123             <Button
124                 android:id="@+id/calcul_btn_del"
125                 android:layout_width="140dp"
126                 android:layout_height="match_parent"
127                 android:layout_marginTop="0dp"
128                 android:background="@drawable/riple_btn_nocorner_3"
129                 android:text="退格"
130                 android:textSize="20dp"
131                 android:textColor="#169FDF"
132                 android:layout_weight="2"
133                 android:textAllCaps="false"
134                 android:fontFamily="宋体">Button>
135 
136         LinearLayout>
137         <LinearLayout
138             android:layout_width="match_parent"
139             android:layout_weight="1"
140             android:layout_height="0dp"
141             android:orientation="horizontal"
142             >
143 
144             <Button
145                 android:id="@+id/calcul_btn_5"
146                 android:layout_width="70dp"
147                 android:layout_height="match_parent"
148                 android:layout_marginTop="0dp"
149                 android:background="@drawable/riple_btn_nocorner_3"
150                 android:text="5"
151                 android:textSize="25dp"
152                 android:textColor="#169FDF"
153                 android:layout_weight="1"
154                 android:fontFamily="宋体">Button>
155             <Button
156                 android:id="@+id/calcul_btn_6"
157                 android:layout_width="70dp"
158                 android:layout_height="match_parent"
159                 android:layout_marginTop="0dp"
160                 android:background="@drawable/riple_btn_nocorner_3"
161                 android:text="6"
162                 android:textSize="25dp"
163                 android:textColor="#169FDF"
164                 android:layout_weight="1"
165                 android:fontFamily="宋体">Button>
166             <Button
167                 android:id="@+id/calcul_btn_4"
168                 android:layout_width="70dp"
169                 android:layout_height="match_parent"
170                 android:layout_marginTop="0dp"
171                 android:background="@drawable/riple_btn_nocorner_3"
172                 android:text="4"
173                 android:textSize="25dp"
174                 android:layout_weight="1"
175                 android:textColor="#169FDF"
176                 android:fontFamily="宋体">Button>
177             <Button
178                 android:id="@+id/calcul_btn_add"
179                 android:layout_width="70dp"
180                 android:layout_height="match_parent"
181                 android:layout_marginTop="0dp"
182                 android:background="@drawable/riple_btn_nocorner_3"
183                 android:text="+"
184                 android:textSize="25dp"
185                 android:textColor="#169FDF"
186                 android:fontFamily="宋体"
187                 android:layout_weight="1"
188                 >Button>
189             <Button
190                 android:id="@+id/calcul_btn_multiply"
191                 android:layout_width="70dp"
192                 android:layout_height="match_parent"
193                 android:layout_weight="1"
194                 android:layout_marginTop="0dp"
195                 android:background="@drawable/riple_btn_nocorner_3"
196                 android:text="×"
197                 android:textSize="25dp"
198                 android:textColor="#169FDF"
199                 android:fontFamily="宋体">Button>LinearLayout>
200         <LinearLayout
201             android:layout_width="match_parent"
202             android:layout_weight="1"
203             android:layout_height="0dp"
204             android:orientation="horizontal"
205             >
206 
207             <Button
208                 android:id="@+id/calcul_btn_7"
209                 android:layout_width="70dp"
210                 android:layout_height="match_parent"
211                 android:layout_below="@id/calcul_btn_4"
212                 android:layout_marginTop="0dp"
213                 android:layout_toLeftOf="@id/calcul_btn_5"
214                 android:background="@drawable/riple_btn_nocorner_3"
215                 android:text="7"
216                 android:textSize="25dp"
217                 android:layout_weight="1"
218                 android:textColor="#169FDF"
219                 android:fontFamily="宋体">Button>
220             <Button
221                 android:id="@+id/calcul_btn_8"
222                 android:layout_width="70dp"
223                 android:layout_height="match_parent"
224                 android:layout_below="@id/calcul_btn_5"
225                 android:layout_marginTop="0dp"
226                 android:layout_toRightOf="@id/calcul_btn_7"
227                 android:background="@drawable/riple_btn_nocorner_3"
228                 android:text="8"
229                 android:layout_weight="1"
230                 android:textSize="25dp"
231                 android:textColor="#169FDF"
232                 android:fontFamily="宋体">Button>
233             <Button
234                 android:id="@+id/calcul_btn_9"
235                 android:layout_width="70dp"
236                 android:layout_height="match_parent"
237                 android:layout_below="@id/calcul_btn_6"
238                 android:layout_marginTop="0dp"
239                 android:layout_toRightOf="@id/calcul_btn_8"
240                 android:background="@drawable/riple_btn_nocorner_3"
241                 android:text="9"
242                 android:layout_weight="1"
243                 android:textColor="#169FDF"
244                 android:textSize="25dp"
245                 android:fontFamily="宋体">Button>
246             <Button
247                 android:id="@+id/calcul_btn_sub"
248                 android:layout_width="70dp"
249                 android:layout_height="match_parent"
250                 android:layout_marginTop="0dp"
251                 android:background="@drawable/riple_btn_nocorner_3"
252                 android:text="-"
253                 android:textSize="25dp"
254                 android:textColor="#169FDF"
255                 android:layout_weight="1"
256                 android:fontFamily="宋体">Button>
257             <Button
258                 android:id="@+id/calcul_btn_divide"
259                 android:layout_width="70dp"
260                 android:layout_height="match_parent"
261                 android:layout_marginTop="0dp"
262                 android:background="@drawable/riple_btn_nocorner_3"
263                 android:layout_weight="1"
264                 android:text="÷"
265                 android:textSize="25dp"
266                 android:textColor="#169FDF"
267                 android:fontFamily="宋体">Button>
268         LinearLayout>
269         <LinearLayout
270             android:layout_width="match_parent"
271             android:layout_weight="1"
272             android:layout_height="0dp"
273             android:orientation="horizontal"
274             >
275             <Button
276                 android:id="@+id/calcul_btn_point"
277                 android:layout_width="70dp"
278                 android:layout_height="match_parent"
279                 android:layout_below="@id/calcul_btn_9"
280                 android:background="@drawable/riple_btn_nocorner_3"
281                 android:text="."
282                 android:gravity="center"
283                 android:textAllCaps="false"
284                 android:layout_weight="1"
285                 android:textSize="40dp"
286                 android:textColor="#169FDF"
287                 android:fontFamily="宋体">Button>
288             <Button
289                 android:id="@+id/calcul_btn_0"
290                 android:layout_width="140dp"
291                 android:layout_height="match_parent"
292                 android:layout_below="@id/calcul_btn_8"
293                 android:layout_marginTop="0dp"
294                 android:layout_toRightOf="@id/calcul_btn_7"
295                 android:background="@drawable/riple_btn_nocorner_3"
296                 android:text="0"
297                 android:textSize="25dp"
298                 android:fontFamily="宋体"
299                 android:layout_weight="2"
300                 android:textColor="#169FDF"
301                 >Button>
302 
303             <Button
304                 android:id="@+id/calcul_btn_equal"
305                 android:layout_width="140dp"
306                 android:layout_height="match_parent"
307                 android:layout_below="@id/calcul_btn_divide"
308                 android:layout_marginTop="0dp"
309                 android:background="@drawable/riple_btn_nocorner_3"
310                 android:text="完成"
311                 android:textSize="20dp"
312                 android:layout_weight="2"
313                 android:textColor="#169FDF"
314                 android:fontFamily="宋体">Button>
315         LinearLayout>
316     LinearLayout>
317 RelativeLayout>
View Code

 

  

CordFragment(记录页面,即记录信息)

 

这里用到的是recycleView放进了这个Fragment中,所以数据更新很令我头痛。

在初始化界面时从SQLite读取数据传到recycleView中显示。

recycleView里放的是TextView,可以实现跑马灯式的循环以解决一行显示不下,两行不好看的问题。

 Android_小账本小结_第10张图片

 

 

 

 

点击TextView后会弹出详细信息界面,在这个界面中可删除此条记录。

Android_小账本小结_第11张图片

 

 

删除这里同样有数据更新的问题,我直接跳到了另一个activity又跳回来,以实现删除时数据的动态更新。

 CordFragment.java

 

  1 package com.example.didida_corder;
  2 
  3 import android.content.Context;
  4 import android.content.Intent;
  5 import android.database.Cursor;
  6 import android.database.sqlite.SQLiteDatabase;
  7 import android.os.Bundle;
  8 import android.util.Log;
  9 import android.view.LayoutInflater;
 10 import android.view.View;
 11 import android.view.ViewGroup;
 12 import android.widget.Button;
 13 import android.widget.TextView;
 14 
 15 import androidx.annotation.NonNull;
 16 import androidx.annotation.Nullable;
 17 import androidx.appcompat.app.AlertDialog;
 18 import androidx.fragment.app.Fragment;
 19 import androidx.recyclerview.widget.LinearLayoutManager;
 20 import androidx.recyclerview.widget.RecyclerView;
 21 
 22 import com.example.didida_corder.Adapter.CordAdapter;
 23 import com.example.didida_corder.R;
 24 import com.example.didida_corder.ToolClass.CustomDialog;
 25 import com.example.didida_corder.ToolClass.SQLiteUserChager;
 26 
 27 import java.util.ArrayList;
 28 import java.util.zip.Inflater;
 29 
 30 public class CordFragment extends Fragment implements CordAdapter.Clickiii {
 31     private RecyclerView recyclerView;
 32     private String[] strings;
 33     private int count;
 34     private String nowusername="defult";
 35     private int i = 0;
 36     private boolean isCreat=false;
 37     private ArrayList arr=new ArrayList<>();
 38     public  CordFragment() {
 39 
 40     }
 41     public static CordFragment newInstance(String nowusername) {
 42 
 43         Bundle args = new Bundle();
 44         args.putString("username",nowusername);
 45         CordFragment fragment = new CordFragment();
 46         fragment.setArguments(args);
 47         return fragment;
 48     }
 49     @Override
 50     public void onAttach(@NonNull Context context) {
 51         super.onAttach(context);
 52         nowusername=getArguments().getString("username");
 53         Log.d("Cord-----------",""+nowusername);
 54     }
 55 
 56     @Override
 57     public void onResume() {
 58         super.onResume();
 59     }
 60 
 61     @Nullable
 62     @Override
 63     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 64         View view = inflater.inflate(R.layout.layout_cordfragment, null, false);
 65 
 66         recyclerView = view.findViewById(R.id.crod_recy);
 67         recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
 68         recyclerView.setAdapter(new CordAdapter(view.getContext(), count, readCord(),this));
 69         isCreat=true;
 70         return view;
 71     }
 72 
 73 
 74     public String[] readCord() {
 75         SQLiteUserChager sqLiteUserChager = new SQLiteUserChager(getContext(), "Userr", null, 1);
 76         SQLiteDatabase sqLiteDatabase = sqLiteUserChager.getReadableDatabase();
 77         Cursor cursor = sqLiteDatabase.rawQuery("select * from Cord where username = ?", new String[]{nowusername});
 78         String[] strings = new String[count = cursor.getCount()];
 79         int i = 0;
 80         if (cursor.moveToNext())
 81             do {
 82                 String[] strings1=new String[7];
 83                 strings1[0]=cursor.getString(cursor.getColumnIndex("date"));
 84                 strings1[1]=cursor.getString(cursor.getColumnIndex("type"));
 85                 strings1[2]=cursor.getString(cursor.getColumnIndex("inout"));
 86                 strings1[3]=cursor.getString(cursor.getColumnIndex("number"));
 87                 strings1[4]=cursor.getString(cursor.getColumnIndex("info"));
 88                 strings1[5]=cursor.getString(cursor.getColumnIndex("username"));
 89                 strings1[6]=cursor.getString(cursor.getColumnIndex("id"));
 90                 arr.add(strings1);
 91                 strings[i] = "我" + cursor.getString(cursor.getColumnIndex("date")) +
 92                         " 在" + cursor.getString(cursor.getColumnIndex("type")) +
 93                         "上" + cursor.getString(cursor.getColumnIndex("inout")) +
 94                         "了" + cursor.getString(cursor.getColumnIndex("number")) + "元";
 95                 i++;
 96             } while (cursor.moveToNext());
 97         cursor.close();
 98         sqLiteDatabase.close();
 99         sqLiteUserChager.close();
100         return strings;
101     }
102 
103     @Override
104     public void onDestroy() {
105         super.onDestroy();
106 
107     }
108 
109     @Override
110     public void clik(int position) {
111         final String[] strings=arr.get(position);
112         final AlertDialog.Builder builder4=new AlertDialog.Builder(getContext());
113         LayoutInflater inflater=LayoutInflater.from(getContext());
114         View view=inflater.inflate(R.layout.layout_dialog_info,null);
115         TextView textView=view.findViewById(R.id.info_tx_2);
116         TextView textView2=view.findViewById(R.id.info_tx_3);
117         TextView textView3=view.findViewById(R.id.info_tx_4);
118         TextView textView4=view.findViewById(R.id.info_tx_5);
119         TextView textView5=view.findViewById(R.id.info_tx_6);
120         Button button=view.findViewById(R.id.btn_ok);
121         Button button1=view.findViewById(R.id.btn_delete);
122         textView.setText(strings[0]);
123         textView2.setText(strings[2]);
124         textView3.setText(strings[1]);
125         textView4.setText(strings[3]);
126         textView5.setText(strings[4]);
127         final AlertDialog alertDialog=builder4.setView(view).show();
128         alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
129         button.setOnClickListener(new View.OnClickListener() {
130             @Override
131             public void onClick(View v) {
132                 alertDialog.dismiss();
133             }
134         });
135         button1.setOnClickListener(new View.OnClickListener() {
136             @Override
137             public void onClick(View v) {
138                 final CustomDialog customDialog=new CustomDialog(getContext());
139                 customDialog.setMessage("确定删除?");
140                 customDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
141                 customDialog.setConfirm("确定", new CustomDialog.IOnConfirmListener() {
142                     @Override
143                     public void onConfirm(CustomDialog dialog) {
144                         SQLiteUserChager sqLiteUserChager=new SQLiteUserChager(getContext(),"Userr",null,1);
145                         SQLiteDatabase sqLiteDatabase=sqLiteUserChager.getWritableDatabase();
146                         sqLiteDatabase.execSQL("delete from Cord where id = ?",new String[]{strings[6]});
147                         sqLiteDatabase.close();
148                         sqLiteUserChager.close();
149                         Intent intent=new Intent(getActivity(),LoginActivity.class);
150                         Bundle bundle=new Bundle();
151                         bundle.putInt("refresh",1);
152                         bundle.putString("username",nowusername);
153                         Log.d("--------cord-log",nowusername);
154                         intent.putExtras(bundle);
155                         startActivity(intent);
156                     }
157                 }).setCancel("取消", new CustomDialog.IOnCancelListener() {
158                     @Override
159                     public void onCancel(CustomDialog dialog) {
160                         customDialog.dismiss();
161                     }
162                 }).show();
163 
164             }
165         });
166     }
167 }
View Code

 layout_cord_fragment    recycleview里放的是一个Textview的ltem这里就不贴了 

 1 xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:id="@+id/cord_linear"
 4     android:background="#FAFAFA"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent">
 7     <androidx.recyclerview.widget.RecyclerView
 8         android:id="@+id/crod_recy"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         >
12     androidx.recyclerview.widget.RecyclerView>
13 RelativeLayout>
View Code

 

 

SociatyFragment(社区页面,大家在社区中讨论省钱心得等等,尚未开发)

 

MyFragment(我的信息页面,它是一个侧滑菜单)

相关实现方法在我的这篇博客中https://www.cnblogs.com/XiaoGao128/p/12260383.html

它在初始化时同样会从数据库中读取用户昵称

点击退出登录会重新跳回登陆界面。

游客登录会显示请先登录。

 

 Android_小账本小结_第12张图片

 

 

 Android_小账本小结_第13张图片

 

 

 

 MyFragment.java

 

  1 package com.example.didida_corder;
  2 
  3 import android.content.Context;
  4 import android.content.Intent;
  5 import android.database.Cursor;
  6 import android.database.sqlite.SQLiteDatabase;
  7 import android.database.sqlite.SQLiteOpenHelper;
  8 import android.os.Bundle;
  9 import android.util.Log;
 10 import android.view.LayoutInflater;
 11 import android.view.View;
 12 import android.view.ViewGroup;
 13 import android.widget.Button;
 14 import android.widget.CheckBox;
 15 import android.widget.EditText;
 16 import android.widget.ImageView;
 17 import android.widget.LinearLayout;
 18 import android.widget.RadioButton;
 19 import android.widget.TextView;
 20 import android.widget.Toast;
 21 
 22 import androidx.annotation.NonNull;
 23 import androidx.annotation.Nullable;
 24 import androidx.appcompat.app.AlertDialog;
 25 import androidx.fragment.app.Fragment;
 26 
 27 import com.example.didida_corder.ToolClass.CustomDialog;
 28 import com.example.didida_corder.ToolClass.Login;
 29 import com.example.didida_corder.ToolClass.SPUtils;
 30 import com.example.didida_corder.ToolClass.SQLiteUserChager;
 31 
 32 import java.util.zip.Inflater;
 33 
 34 public class MyFragment extends Fragment implements View.OnClickListener {
 35     private TextView tv_like, tv_likeme, tv_depatch;
 36     private LinearLayout linearLayout;
 37     private int like, likeme, depatch;
 38     private Context context;
 39     private boolean flag = false;
 40     private TextView tv_name;
 41     private ImageView iv_head;
 42     private int type;
 43     private String nowusername="defult";
 44     private Button button_log;
 45     public MyFragment() {
 46 
 47     }
 48 //    public static String getNowusername(){
 49 //        return nowusername;
 50 //    }
 51     //在activity中设置数字
 52     public void Set(int like, int likeme, int depatch) {
 53         this.like = like;
 54         this.likeme = likeme;
 55         this.depatch = depatch;
 56         flag = true;
 57     }
 58 
 59     @Nullable
 60     @Override
 61     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 62         View view = inflater.inflate(R.layout.layout_myfragment, null, false);
 63         tv_like = view.findViewById(R.id.myfrag_likeone);
 64         tv_likeme = view.findViewById(R.id.myfrag_likeme);
 65         tv_depatch = view.findViewById(R.id.myfrag_patch);
 66         iv_head=view.findViewById(R.id.myfrag_head);
 67         tv_name=view.findViewById(R.id.tv_name);
 68         button_log=view.findViewById(R.id.myfrag_log);
 69         linearLayout=view.findViewById(R.id.myfrag_linear_out);
 70         linearLayout.setOnClickListener(this);
 71         button_log.setOnClickListener(this);
 72         if (flag) {
 73             tv_like.setText(like);
 74             tv_likeme.setText(likeme);
 75             tv_depatch.setText(depatch);
 76         }
 77         return view;
 78     }
 79 
 80     public void sentenceAndSet(String username,int type){
 81         this.nowusername=username;
 82         this.type=type;
 83         if (type==0) {
 84             SQLiteUserChager sqLiteUserChager = new SQLiteUserChager(getContext(), "Userr", null, 1);
 85             SQLiteDatabase sqLiteDatabase = sqLiteUserChager.getReadableDatabase();
 86 
 87             Cursor cursor = sqLiteDatabase.rawQuery("select * from user where username = ?", new String[]{nowusername});
 88             cursor.moveToNext();
 89             tv_name.setText(cursor.getString(cursor.getColumnIndex("name")));
 90             button_log.setVisibility(View.INVISIBLE);
 91             tv_name.setVisibility(View.VISIBLE);
 92             iv_head.setVisibility(View.VISIBLE);
 93 
 94         }else {
 95             tv_name.setVisibility(View.INVISIBLE);
 96             iv_head.setVisibility(View.INVISIBLE);
 97             button_log.setVisibility(View.VISIBLE);
 98         }
 99     }
100     @Override
101     public void onClick(View v) {
102         switch (v.getId()){
103             case R.id.myfrag_linear_out:{
104                 CustomDialog dialog=new CustomDialog(getContext(),R.layout.layout_custom_dialog);
105                 dialog.setTitle("提示").setMessage("退出登录?").setConfirm("退出", new CustomDialog.IOnConfirmListener() {
106                     @Override
107                     public void onConfirm(CustomDialog dialog) {
108                         tv_name.setVisibility(View.INVISIBLE);
109                         iv_head.setVisibility(View.INVISIBLE);
110                         button_log.setVisibility(View.VISIBLE);
111                         nowusername="defult";
112                         SPUtils.put(getContext(),"auto",0);
113                         Intent intent=new Intent(getContext(),LoginActivity.class);
114                         startActivity(intent);
115                     }
116                 }).setCancel("算了", new CustomDialog.IOnCancelListener() {
117                     @Override
118                     public void onCancel(CustomDialog dialog) {
119                         dialog.dismiss();
120                     }
121                 }).show();
122                 break;
123             }
124             case R.id.myfrag_log:{
125                 Intent intent=new Intent(getContext(),LoginActivity.class);
126                 startActivity(intent);
127                 break;
128             }
129 
130         }
131     }
132 
133 
134 }
View Code

 layout_myfragment.xml 

  1 xml version="1.0" encoding="utf-8"?>
  2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3     android:layout_width="270dp"
  4     android:layout_height="match_parent"
  5     android:background="#F4F4F4"
  6     android:orientation="vertical">
  7 
  8     <FrameLayout
  9         android:layout_width="match_parent"
 10         android:layout_height="wrap_content">
 11         <Button
 12             android:id="@+id/myfrag_log"
 13             android:layout_width="180dp"
 14             android:layout_height="60dp"
 15             android:layout_gravity="center"
 16             android:background="@drawable/riple_btn_corner_3"
 17             android:text="请先登录"
 18             android:textColor="#212"
 19             android:textSize="20dp"
 20             android:visibility="invisible">Button>
 21         <LinearLayout
 22             android:layout_width="wrap_content"
 23             android:layout_height="match_parent"
 24             android:orientation="vertical"
 25             android:gravity="center"
 26             android:layout_marginLeft="19dp"
 27             >
 28         <ImageView
 29             android:id="@+id/myfrag_head"
 30             android:layout_width="100dp"
 31             android:layout_height="100dp"
 32             android:layout_margin="10dp"
 33             android:src="@drawable/sor"
 34             android:visibility="visible">ImageView>
 35 
 36         <TextView
 37             android:id="@+id/tv_name"
 38             android:layout_width="wrap_content"
 39             android:layout_height="wrap_content"
 40             android:text="小高128"
 41             android:textColor="#212"
 42             android:textSize="25dp"
 43             android:layout_marginBottom="10dp"
 44             android:visibility="visible">TextView>
 45         LinearLayout>
 46     FrameLayout>
 47 
 48     <View
 49         android:layout_width="300dp"
 50         android:layout_height="0.1dp"
 51         android:layout_marginTop="5dp"
 52         android:background="#B3221122">View>
 53 
 54     <LinearLayout
 55         android:layout_width="match_parent"
 56         android:layout_height="40dp"
 57         android:orientation="horizontal">
 58 
 59         <TextView
 60             android:id="@+id/myfrag_patch"
 61             android:layout_width="wrap_content"
 62             android:layout_height="match_parent"
 63             android:layout_weight="1"
 64             android:background="#FFFFFF"
 65             android:gravity="center"
 66             android:text="0"
 67             android:textColor="#B3222222"
 68             android:textSize="25dp">TextView>
 69 
 70         <TextView
 71             android:id="@+id/myfrag_likeone"
 72             android:layout_width="wrap_content"
 73             android:layout_height="match_parent"
 74             android:layout_weight="1"
 75             android:background="#FFFFFF"
 76             android:gravity="center"
 77             android:text="0"
 78             android:textColor="#B3222222"
 79             android:textSize="25dp">TextView>
 80 
 81         <TextView
 82             android:id="@+id/myfrag_likeme"
 83             android:layout_width="wrap_content"
 84             android:layout_height="match_parent"
 85             android:layout_weight="1"
 86             android:background="#FFFFFF"
 87             android:gravity="center"
 88             android:text="0"
 89             android:textColor="#B3222222"
 90             android:textSize="25dp">TextView>
 91     LinearLayout>
 92 
 93     <LinearLayout
 94         android:layout_width="match_parent"
 95         android:layout_height="40dp"
 96         android:orientation="horizontal">
 97 
 98         <TextView
 99             android:layout_width="wrap_content"
100             android:layout_height="match_parent"
101             android:layout_weight="1"
102             android:background="#FFFFFF"
103             android:gravity="center"
104             android:text="动态"
105             android:textColor="#B3222222"
106             android:textSize="17dp">TextView>
107 
108         <TextView
109             android:layout_width="wrap_content"
110             android:layout_height="match_parent"
111             android:layout_weight="1"
112             android:background="#FFFFFF"
113             android:gravity="center"
114             android:text="关注"
115             android:textColor="#B3222222"
116             android:textSize="17dp">TextView>
117 
118         <TextView
119             android:layout_width="wrap_content"
120             android:layout_height="match_parent"
121             android:layout_weight="1"
122             android:background="#FFFFFF"
123             android:gravity="center"
124             android:text="粉丝"
125             android:textColor="#B3222222"
126             android:textSize="17dp">TextView>
127 
128     LinearLayout>
129 
130     <View
131         android:layout_width="300dp"
132         android:layout_height="0.1dp"
133         android:background="#212">View>
134 
135     <LinearLayout
136         android:layout_width="match_parent"
137         android:layout_height="wrap_content"
138         android:background="@drawable/riple_btn_nocorner_3"
139         android:layout_marginTop="20dp"
140         android:layout_weight="1"
141         android:gravity="center_vertical"
142         android:orientation="horizontal">
143 
144         <ImageView
145             android:layout_width="25dp"
146             android:layout_height="25dp"
147             android:layout_marginLeft="20dp"
148             android:src="@drawable/xiaoxi">ImageView>
149 
150         <RadioButton
151             android:layout_width="wrap_content"
152             android:layout_height="match_parent"
153             android:layout_marginLeft="20dp"
154             android:button="@null"
155             android:text="我的消息"
156             android:textColor="#212"
157             android:textSize="15dp">RadioButton>
158 
159         <ImageView
160             android:layout_width="20dp"
161             android:layout_height="27dp"
162             android:layout_marginLeft="40dp"
163             android:src="@drawable/jiantou">ImageView>
164     LinearLayout>
165 
166     <LinearLayout
167         android:layout_width="match_parent"
168         android:background="@drawable/riple_btn_nocorner_3"
169         android:layout_height="wrap_content"
170         android:layout_marginTop="20dp"
171         android:layout_weight="1"
172         android:gravity="center_vertical"
173         android:orientation="horizontal">
174 
175         <ImageView
176             android:layout_width="28dp"
177             android:layout_height="28dp"
178             android:layout_marginLeft="20dp"
179             android:src="@drawable/shouc">ImageView>
180 
181         <RadioButton
182             android:layout_width="wrap_content"
183             android:layout_height="match_parent"
184             android:layout_marginLeft="20dp"
185             android:button="@null"
186             android:text="我的收藏"
187             android:textColor="#212"
188             android:textSize="15dp">RadioButton>
189 
190         <ImageView
191             android:layout_width="20dp"
192             android:layout_height="27dp"
193             android:layout_marginLeft="40dp"
194             android:src="@drawable/jiantou">ImageView>
195     LinearLayout>
196 
197     <LinearLayout
198         android:layout_width="match_parent"
199         android:layout_height="wrap_content"
200         android:layout_marginTop="20dp"
201         android:background="@drawable/radio"
202         android:layout_weight="1"
203         android:gravity="center_vertical"
204         android:orientation="horizontal">
205 
206         <ImageView
207             android:layout_width="25dp"
208             android:layout_height="25dp"
209             android:layout_marginLeft="20dp"
210             android:src="@drawable/kefu">ImageView>
211 
212         <RadioButton
213             android:layout_width="wrap_content"
214             android:layout_height="match_parent"
215             android:layout_marginLeft="20dp"
216             android:button="@null"
217             android:text="联系客服"
218             android:textColor="#212"
219             android:textSize="15dp"
220             >RadioButton>
221 
222         <ImageView
223             android:layout_width="20dp"
224             android:layout_height="27dp"
225             android:layout_marginLeft="40dp"
226             android:src="@drawable/jiantou">ImageView>
227     LinearLayout>
228 
229     <LinearLayout
230         android:id="@+id/myfrag_linear_out"
231         android:layout_width="match_parent"
232         android:layout_height="wrap_content"
233         android:layout_marginTop="20dp"
234         android:layout_weight="1"
235         android:background="@drawable/riple_btn_nocorner_3"
236         android:gravity="center_vertical"
237         android:orientation="horizontal">
238 
239         <ImageView
240             android:layout_width="25dp"
241             android:layout_height="25dp"
242             android:layout_marginLeft="20dp"
243             android:src="@drawable/tuichu">ImageView>
244 
245         <TextView
246             android:id="@+id/rd_out"
247             android:layout_width="wrap_content"
248             android:layout_height="match_parent"
249             android:layout_marginLeft="20dp"
250             android:gravity="center_vertical"
251             android:button="@null"
252             android:text="退出登录"
253             android:textColor="#212"
254             android:textSize="15dp">TextView>
255 
256         <ImageView
257             android:layout_width="20dp"
258             android:layout_height="27dp"
259             android:layout_marginLeft="40dp"
260             android:src="@drawable/jiantou">ImageView>
261     LinearLayout>
262 LinearLayout>
View Code

 一个SharePerference工具类

SPUtils.java

 1 package com.example.didida_corder.ToolClass;
 2 
 3 import android.content.Context;
 4 import android.content.SharedPreferences;
 5 
 6 import androidx.annotation.Nullable;
 7 
 8 import java.util.Map;
 9 
10 public class SPUtils {
11     /**
12      * 保存在手机里的SP文件名
13      */
14     public static final String FILE_NAME = "my_sp";
15 
16     /**
17      * 保存数据
18      */
19     public static SPUtils put(Context context, String key, Object obj) {
20         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, context.MODE_PRIVATE);
21         SharedPreferences.Editor editor = sp.edit();
22         if (obj instanceof Boolean) {
23             editor.putBoolean(key, (Boolean) obj);
24         } else if (obj instanceof Float) {
25             editor.putFloat(key, (Float) obj);
26         } else if (obj instanceof Integer) {
27             editor.putInt(key, (Integer) obj);
28         } else if (obj instanceof Long) {
29             editor.putLong(key, (Long) obj);
30         } else {
31             editor.putString(key, (String) obj);
32         }
33         editor.commit();
34         SPUtils spUtils=new SPUtils();
35         return spUtils;
36     }
37 
38 
39     /**
40      * 获取指定数据
41      */
42     public static Object get(Context context, String key, @Nullable Object defaultObj) {
43         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, context.MODE_PRIVATE);
44         if (defaultObj instanceof Boolean) {
45             return sp.getBoolean(key, (Boolean) defaultObj);
46         } else if (defaultObj instanceof Float) {
47             return sp.getFloat(key, (Float) defaultObj);
48         } else if (defaultObj instanceof Integer) {
49             return sp.getInt(key, (Integer) defaultObj);
50         } else if (defaultObj instanceof Long) {
51             return sp.getLong(key, (Long) defaultObj);
52         } else if (defaultObj instanceof String) {
53             return sp.getString(key, (String) defaultObj);
54         }
55         return null;
56     }
57 
58     /**
59      * 删除指定数据
60      */
61     public static void remove(Context context, String key) {
62         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, context.MODE_PRIVATE);
63         SharedPreferences.Editor editor = sp.edit();
64         editor.remove(key);
65         editor.commit();
66     }
67 
68 
69     /**
70      * 返回所有键值对
71      */
72     public static Map getAll(Context context) {
73         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, context.MODE_PRIVATE);
74         Map map = sp.getAll();
75         return map;
76     }
77 
78     /**
79      * 删除所有数据
80      */
81     public static void clear(Context context) {
82         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, context.MODE_PRIVATE);
83         SharedPreferences.Editor editor = sp.edit();
84         editor.clear();
85         editor.commit();
86     }
87 
88     /**
89      * 检查key对应的数据是否存在
90      */
91     public static boolean contains(Context context, String key) {
92         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, context.MODE_PRIVATE);
93         return sp.contains(key);
94     }
95 
96 }
View Code

 

 

 

  

 

你可能感兴趣的:(Android_小账本小结)