zoukankan      html  css  js  c++  java
  • 家庭记账本app实现登录注册界面以及仿微信操作界面(共4个实现一个)遇到了麻烦

    今天学习了数据的创建,以及关于数据库的相关操作。

    今天主要是实现了对于数据库的增加和查找。

    具体的代码如下:

    首先是数据库的创建:

    DBOpenMessage.java

    package com.example.thetrueappwen;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
    import androidx.annotation.Nullable;
    
    public class DBOpenMessage extends SQLiteOpenHelper
    {
        final String db_wen2="create table db_wen2 (_id integer primary key autoincrement,username varchar,usermoney integer,userevent varchar,userkind varchar,userdata varchar,usertime varchar)";
        public DBOpenMessage(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, null, version);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(db_wen2);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.i("数据","更新"+"oldVerSion"+"-->"+newVersion);
        }
    }

    这是其中的一个数据库的创建。

    现在一共创建了两个数据库的表格。在此先展示一个。

    对应的要完成app的登录和注册。

    对应的代码如下:

    MainActivity.java

    package com.example.thetrueappwen;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
        private DBOpenMessageUser messageuser;
        private EditText username,password;
        private Button login,register;
        private String passwordstr="";
        private String usernamestr="";
        private String passwordstr2;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //创建数据库对象
            messageuser=new DBOpenMessageUser(MainActivity.this,"db_wen",null,1);
            putusername();
    
            username=(EditText)findViewById(R.id.username1);
            password=(EditText)findViewById(R.id.password1);
            login=(Button)findViewById(R.id.button_login);
            register=(Button)findViewById(R.id.button_register);
    
            //点击登录后的判断
            login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    usernamestr=username.getText().toString();
                    passwordstr=password.getText().toString();
                    Cursor cursor1=messageuser.getReadableDatabase().query("db_wen",null,"username=?",new String[]{usernamestr},null,null,null);
                    //显示表名、限制列、条件、值、其他的默认
                    if(usernamestr.equals("")||passwordstr.equals(""))
                    {
                        Toast.makeText(MainActivity.this,"请填写齐全",Toast.LENGTH_SHORT).show();
                    }
                    if(cursor1.moveToFirst())
                    {
                        do {
                             passwordstr2=cursor1.getString(cursor1.getColumnIndex("password"));
                        }while(cursor1.moveToNext());
                    }
    
                    cursor1.close();
                    if(password.getText().toString().equals(passwordstr2)&&!usernamestr.equals("")&&!passwordstr.equals(""))
                    {
                        Toast.makeText(MainActivity.this,"恭喜登录成功",Toast.LENGTH_SHORT).show();
                        Intent intent=new Intent(MainActivity.this,AllWord.class);
                        //传递参数在intent中
                        intent.putExtra("username",usernamestr);
                        startActivity(intent);
    
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this,"账号不存在,不能进行登录",Toast.LENGTH_SHORT).show();
                        username.setText("");
                        password.setText("");
                        Toast.makeText(MainActivity.this,"请确认信息在登录",Toast.LENGTH_SHORT).show();
                    }
                }
            });
            //注册页面的相关操作
            register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    Intent intent=new Intent(MainActivity.this,Register.class);
                    startActivity(intent);
                }
            });
        }
        private void putusername()
        {
            //
            //传递数值
            WeixinFragment11 myFragment4 = new WeixinFragment11();
            Bundle bundle4 = new Bundle();
            bundle4.putString("username",usernamestr);
            myFragment4.setArguments(bundle4);
    
    
        }
    
    }

    还有就是:

     register2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     username_str=reg_username.getText().toString();
                     password_str1=reg_password1.getText().toString();
                     password_str2=reg_password2.getText().toString();
                    if(password_str1.equals("")||password_str2.equals("")||username_str.equals(""))
                    {
                        Toast.makeText(Register.this,"存在没有填写的项目",Toast.LENGTH_SHORT).show();
                        Toast.makeText(Register.this,"请重新输入",Toast.LENGTH_SHORT).show();
                    }
                   else if(password_str1.equals(password_str2))
                    {
                        insterData(messageregister.getReadableDatabase(),username_str,password_str1);
                        //进行数据库的数据增加
                        Toast.makeText(Register.this,"注册成功",Toast.LENGTH_SHORT).show();
                        Toast.makeText(Register.this,"可以登录了",Toast.LENGTH_SHORT).show();
                        Intent intent=new Intent(Register.this,MainActivity.class);
                        startActivity(intent);
                    }
                    else
                    {
                        Toast.makeText(Register.this,"输入的两次密码不一致",Toast.LENGTH_LONG).show();
                        Toast.makeText(Register.this,"请重新输入",Toast.LENGTH_SHORT).show();
                        reg_password1.setText("");
                        reg_password2.setText("");
                    }
    package com.example.thetrueappwen;
    
    import android.content.ContentValues;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class Register extends AppCompatActivity
    {
        private DBOpenMessageUser messageregister;
        private Button login2,register2;
        private EditText reg_password1,reg_password2,reg_username;
        private  String username_str="";
        private String password_str1="";
        private String password_str2="";
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.register);
            //创建数据库对象
            messageregister=new DBOpenMessageUser(Register.this,"db_wen",null,1);
            login2=(Button)findViewById(R.id.login2);
            register2=(Button)findViewById(R.id.register2);
    
            reg_password1=(EditText)findViewById(R.id.reg_password1);
            reg_password2=(EditText)findViewById(R.id.reg_password2);
            reg_username=(EditText)findViewById(R.id.reg_username);
    
            //返回登录界面
            login2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(Register.this,MainActivity.class);
                    Toast.makeText(Register.this,"欢迎来到登录界面",Toast.LENGTH_SHORT).show();
                    startActivity(intent);
                }
            });
            //确定注册界面
            register2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     username_str=reg_username.getText().toString();
                     password_str1=reg_password1.getText().toString();
                     password_str2=reg_password2.getText().toString();
                    if(password_str1.equals("")||password_str2.equals("")||username_str.equals(""))
                    {
                        Toast.makeText(Register.this,"存在没有填写的项目",Toast.LENGTH_SHORT).show();
                        Toast.makeText(Register.this,"请重新输入",Toast.LENGTH_SHORT).show();
                    }
                   else if(password_str1.equals(password_str2))
                    {
                        insterData(messageregister.getReadableDatabase(),username_str,password_str1);
                        //进行数据库的数据增加
                        Toast.makeText(Register.this,"注册成功",Toast.LENGTH_SHORT).show();
                        Toast.makeText(Register.this,"可以登录了",Toast.LENGTH_SHORT).show();
                        Intent intent=new Intent(Register.this,MainActivity.class);
                        startActivity(intent);
                    }
                    else
                    {
                        Toast.makeText(Register.this,"输入的两次密码不一致",Toast.LENGTH_LONG).show();
                        Toast.makeText(Register.this,"请重新输入",Toast.LENGTH_SHORT).show();
                        reg_password1.setText("");
                        reg_password2.setText("");
                    }
                }
            });
        }
        private void insterData(SQLiteDatabase sqLiteDatabase, String username, String password)
        {
            ContentValues values=new ContentValues();
            values.put("username",username);
            values.put("password",password);
            sqLiteDatabase.insert("db_wen",null,values);
        }
        @Override
        protected void onDestroy()
        {
            super.onDestroy();
            if(messageregister!=null)
                messageregister.close();
        }
    }

    解决了各个网页之间的信息的传递:

    具体的截图如下:

     

     这里的遇到的主要错误是对于参数的相互传递:

    刚开始想用的是Bundle来进行activity向fragment传递参数;具体的网上的代码简单如下操作:

    //Activity传值,通过Bundle
    Bundle bundle = new Bundle();
    bundle.putString("MainActivity", "Hello,Fragment");
    //首先有一个Fragment对象 调用这个对象的setArguments(bundle)传递数据
    myFragment.setArguments(bundle);
    
    //点击按钮接受Fragment传回来的值
    btn_send.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        Bundle bundle = myFragment.getArguments();
        String result = bundle.getString("MyFragment");
        Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show();
        }
    });

    接收数据

    //点击按钮接收Activity传过来的值
    btn_fragment.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        Bundle bundle = getArguments();
        String result = bundle.getString("MainActivity");
        Toast.makeText(getActivity(), result, Toast.LENGTH_LONG).show();
        }
    });
    
    //Fragment回传值给Activity
    getArguments().putString("MyFragment", "Hello,Activity");

    这里就是对于boudle的简单的操作。
    但是由于一些原因。当接收到的时候,得到的Boudle的参数对于他的操作得到getString会出现空指针的错误。
    经过一些处理。发现和Fragment和activity之间的传递时间等相关因素。收到影响。最后弄了好几个小时一直没解决问题。
    但是用onAttach解决了参数传递之间的问题,解决了Boudle在我笔记上不能传递的没有解决的问题。
    解决了数据库修改后,需要卸载原有的程序在进行安装运行,才可以完成修改之后的代码。
     
  • 相关阅读:
    【洛谷 4613】Olivander
    【洛谷 1385】密令
    【洛谷 4439】Aron
    【洛谷 3383】线性筛素数
    【洛谷 2412】查单词
    【洛谷 1980】计数问题
    【洛谷 3372】(模板)线段树 1
    Luogu P3743 kotori的设备
    Luogu P2340 [USACO03FALL]Cow Exhibition G
    Luogu P3047 [USACO12FEB]Nearby Cows G
  • 原文地址:https://www.cnblogs.com/dazhi151/p/12266927.html
Copyright © 2011-2022 走看看