栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android开发之跳转界面

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android开发之跳转界面

1、通过显示意图跳转界面

第一个Activity(通过Intent携带数据跳转到另一个Activity)

package com.example.activitypractice;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private Button mLogin;
    private EditText mAccount;
    private EditText mPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG,"responded to login click");
                handlerListener();
            }
        });
    }
    
    private void handlerListener() {
        
        String account = mAccount.getText().toString().trim();
        if (TextUtils.isEmpty(account)){
            Toast.makeText(this,"账号用户名不能为空",Toast.LENGTH_SHORT).show();
            return;
        }
        String password = mPassword.getText().toString().trim();
        if (TextUtils.isEmpty(password)){
            Toast.makeText(this,"账号密码不能为空",Toast.LENGTH_LONG).show();
            return;
        }
        Intent intent = new Intent();
        intent.setClass(this,SecondActivity.class);
        intent.putExtra("account",account);
        intent.putExtra("password",password);
        startActivity(intent);
    }
	
    private void initView() {
        mAccount = findViewById(R.id.main_account);
        mPassword = findViewById(R.id.main_password);
        mLogin = findViewById(R.id.main_login);
    }
}

第二个Activity(格式请自行通过layout布局)

package com.example.activitypractice;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;


public class SecondActivity extends AppCompatActivity {

    private TextView mAccount;
    private TextView mPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        init();
        Intent intent = this.getIntent();
        if (mAccount != null ){
            mAccount.setText(intent.getStringExtra("account"));
        }
        if (mPassword !=null ){
            mPassword.setText(intent.getStringExtra("password"));
        }
    }

    private void init() {
        mAccount = findViewById(R.id.second_account);
        mPassword = findViewById(R.id.second_password);
    }
}

结果如下:

2、通过隐式意图跳转界面

第一个Activity

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private Button mLogin;
    private EditText mAccount;
    private EditText mPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG,"responded to login click");
                handlerListener();
            }
        });
    }

    
    private void handlerListener() {
        
        Intent intent = new Intent();
        intent.setAction("LoginInfo");
        startActivity(intent);
    }
    private void initView() {
        mAccount = findViewById(R.id.main_account);
        mPassword = findViewById(R.id.main_password);
        mLogin = findViewById(R.id.main_login);
    }
}

第二个Activity

public class ThirdActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
    }
}

需要为第三个Activity在AndroidManifest.xml中添加过滤(ThirdActivity中的Intent-fliter)




    
        
            
                

                
            
        
        
        
            
                
                
            
        
    


3、Intent和Intent过滤器

Intent是一个消息传递对象,主要的基本用例包括三类。

  • 启动Activity
    1、通过将Intent传递给startActivity(),可以启动一个新的实例(Activity),并携带必要的数据。
    2、若要在Activity完成后收到结果值,调用startActivityForResult()。在Activity的onActivityResult()的回调中,Activity将结果作为单独的Intent对象接收。
  • 启动Service
    service是一个没有UI界面在后台执行的组件。在Android 5.0之前,通过将Intent传递给startService()来启动一个服务
  • 传递广播
    广播是任何应用均可接收到的消息。通过将Intent传递给sendBroadcast()或sendOrderedBroadcast(),将广播传递给其它应用。

Intent类型

  • 显式Intent
    通过提供目标应用的软件包名称或完全限定的组件类名来指定可处理 Intent 的应用。常用于应用内部组件间跳转。
  • 隐式Intent
    不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理。常用于应用之间的跳转。


仅为学习过程中的记录,方便自己以后查阅,也希望能帮助到每一位查阅者。其它Intent详情均可参考Android Developer中的详细介绍。
参考文献地址:https://developer.android.google.cn/guide/components/intents-filters?hl=zh-cn

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号