【Android studio 活动间数据传递】

方案设计

在这里插入图片描述

如图
在用户点击进入APP后,自动进入启动页面。启动页持续3s后进入登陆界面。
登陆界面包含用户名、密码,以及登陆和注册功能。
在用户输入用户名密码后,判断其是否已经存在;若存在,则弹出Toast显示用户具体信息;若不存在,则弹出弹窗提示信息有误并返回登陆页面。
回到登陆界面,判断是否用户选择注册;若选择注册,则跳转到注册页面,用户填好信息后返回登陆界面;
在用户输入用户名密码后,判断其是否已经注册;若已注册,则弹出Toast显示用户具体信息。

实现思路

在这里插入图片描述

如图
先创建三个页面activity并完成其中不同组件的设计;
再将不同页面之间的跳转、信息传递写入组件中;
最后,对照总体设计检验实验成果。

实验结果

启动页

在这里插入图片描述
难点在于将默认页面入口改为此页面
在AndriodManifest.xml中修改代码
在这里插入图片描述
SplashActivity.java代码

public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent mainIntent = new Intent(SplashActivity.this, LoignActivity.class);
                startActivity(mainIntent);
                finish();
            }

        }, 3000);
    }
}

登陆页

在这里插入图片描述

在这里插入图片描述

在LoginActivity.java中写入按键的事件监听器,每按一次处理一次用户所输入的用户名和密码串;错误则按if输出信息有误,正确则按照else中输出toast输出正确信息
在这里插入图片描述
另:与注册页相关联,用于更新用户名与密码
在这里插入图片描述
LoignActivity.java

public class LoignActivity extends AppCompatActivity {
    private EditText nameET,passwordET;
    private Button loginBt,registerBt;
    private String userName = "Admin";
    private String pw_msg = "123456";
    private String input_username, input_pwd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_logint);

        nameET = (EditText) findViewById(R.id.username);
        passwordET = (EditText)findViewById(R.id.password);
        loginBt = (Button) findViewById(R.id.loginBt);
        registerBt = (Button) findViewById(R.id.registerBt);

        loginBt.setOnClickListener(new Button.OnClickListener(){
             public void onClick(View v) {
                input_username = nameET.getText().toString();
                input_pwd = passwordET.getText().toString();
                if(input_username.length() == 0 || input_pwd.length() == 0 || !input_username.equals(userName) || !input_pwd.equals(pw_msg)) {
                    new AlertDialog.Builder(LoignActivity.this).setTitle("登录信息有误") .setMessage("请输入正确的用户名和密码") .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialogInterface, int i) {
                            //finish();
                            } }).show();
                    nameET.setText("");
                    passwordET.setText("");
                    nameET.requestFocus();}
                else { String msg = "欢迎进入DIY!! \n您输入的用户名是:"+ input_username + "\n密码是:"+ input_pwd;
                Toast.makeText(LoignActivity.this,msg,Toast.LENGTH_LONG).show(); } } });
        registerBt.setOnClickListener(new Button.OnClickListener(){
             public void onClick(View v) {
            Intent intent = new Intent(LoignActivity.this,RegisterActivity.class);
            startActivityForResult(intent,1); } });
}
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) { //在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动
            if (resultCode == RESULT_OK) {
                userName = data.getStringExtra("regName");
                pw_msg = data.getStringExtra("regPwd");
            }
        }
    }
}

注册页

在这里插入图片描述
在这里插入图片描述

在RegisterActivity.java中注册一个新的监听器,点击后后将用户名和密码通过 Bundle,利用 setResult()方法返回给 LogiActivity 活动
在这里插入图片描述
RegisterActivity.java

public class RegisterActivity extends AppCompatActivity {
    private EditText nameET,pwdET;
    private Button regBt;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        nameET = (EditText)findViewById(R.id.reg_name);
        pwdET = (EditText)findViewById(R.id.reg_pwd);
        regBt =(Button)findViewById(R.id.reg_bt);
        regBt.setOnClickListener(new Button.OnClickListener(){
             public void onClick(View v)
            {
                Intent intent3=new Intent(); //该“意图”仅仅只传递数据
                intent3.putExtra("regName",nameET.getText().toString());
                intent3.putExtra("regPwd",pwdET.getText().toString());
                setResult(RESULT_OK, intent3);
                finish();
            }
        });
    }
}

AndroidManifest.xml

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".LoignActivity" />
        <activity android:name=".RegisterActivity" />
    </application>

经回到登陆页面,检测新注册的用户名密码,显示正确,实验完成

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值