Android-窗口跳转

我们通过按钮来实现窗口跳转

首先创建我们的主文件main.java

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

设置布局文件

res\layout\ly_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>

清单文件的注册

        <activity android:name=".AMain" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>    

显式跳转

在布局文件中设置一个按钮

    <Button
        android:id="@+id/btn_explicit"
        android:layout_width="400px"
        android:layout_height="200px"
        android:text="显式跳转"
        />

新建显式跳转目的页面explicit_check.java

public class explicit_check extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ly_explicit_check);
    }
}

绑定布局文件(通过文本框提示显式跳转成功)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="显式跳转成功!!"/>
</LinearLayout>

清单文件中注册

<activity android:name=".explicit_check" android:exported="true">

在主页面文件中获取按钮,并设置其点击事件

        findViewById(R.id.btn_explicit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(AMain.this,explicit_check.class));
            }
        });

因为我们知道跳转的初始页面和目的页面,所以这种方式称为显式跳转

显式跳转Intent方法的源码:

    public Intent(Context packageContext, Class<?> cls) {
        throw new RuntimeException("Stub!");
    }

隐式跳转 

同样设置在主页面中设置按钮来实现

    <Button
        android:id="@+id/btn_implicit"
        android:layout_width="400px"
        android:layout_height="200px"
        android:text="隐式跳转"
        />

新建隐式跳转目的页面implicit_check.java(同上)

由于我们不希望主页面知道我们的目的页面,所以我们设置一个Uri路径

这样,其他组件就可以通过该路径来访问本组件

清单文件:

        <activity android:name=".implicit_check" android:exported="true">
            <intent-filter>
                <action android:name="Implicit_Action"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="mosang"
                    android:host="implicit.check"/>
            </intent-filter>

data标签中的值,可以任意设置,只要在跳转时与路径匹配即可

设置按钮事件

        findViewById(R.id.btn_implicit).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent("Implicit_Action", Uri.parse("mosang://implicit.check")));
            }
//URI protocol:\\host:port\subpath?param=value
        });

Intent对象需要两个参数:

1. action字符串,即我们在清单文件中自定义的action标签

2.Uri路径:

  • protocol:与data标签中设置的scheme值匹配
  • host:与data标签中设置的host值匹配

隐式跳转方法的源码:

    public Intent(String action, Uri uri) {
        throw new RuntimeException("Stub!");
    }

预定义Action

 效果:通过点击按钮来打开系统的通话页面,并把用户输入的号码复制过去

按钮实现:

    <!--获取用户输入数据-->
    <EditText
        android:id="@+id/phone_text"
        android:layout_width="match_parent"
        android:layout_height="200px"
        android:inputType="phone"
        android:maxLength="11"
        android:hint="请输入手机号码"
        />
    <Button
        android:id="@+id/btn_action"
        android:layout_width="400px"
        android:layout_height="200px"
        android:text="预定义action"
        />

实现按钮功能:

//通过findViewById函数获取EditText对象,将其强转为EditText对象即可获取其值
EditText text1=(EditText)findViewById(R.id.phone_text);
        findViewById(R.id.btn_action).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+text1.getText().toString())));
                //通过text1.getText().toString()拿到内容字符串
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值