zoukankan      html  css  js  c++  java
  • 如何切换到自定义的Activity

    一. 新建一个空的工程,并添加一个按钮

    二.新建一个布局文件,命名为my_aty, 并添加一个文本

    三.新建一个类,命名为MyAty,并重写onCreate函数

     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.my_aty);//绑定布局文件
        }

    四.修改MainAcitivity.java,启动MyAty

       protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent(MainActivity.this,MyAty.class));
                }
            });
        }

    五.在AndroidManifestAcivity.xml中注册MyAty

     <activity android:name=".MyAty"/>

    六.运行结果

    PS:还可以采用另一种方式实现activity之间的切换,即隐式Intent

    在MyAty中添加一个常量

    public static final String ACTION = "com.example.luozhenshan.learnintent.intent.action.MyAty";

     MainAcitivity.java中的代码修改为:

    startActivity(new Intent(MyAty.ACTION));

    AndroidManifest.xml中的代码修改为:

    <activity android:name=".MyAty">
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <action android:name="com.example.luozhenshan.learnintent.intent.action.MyAty"/>
                </intent-filter>
            </activity>

     使用隐式Intent可实现跨应用调用Activity

    一.在同一个project中新建一个模块,命名为App1,并在布局文件中添加一个按钮

    此时会显示有两个不同的App:App和App1

    二. 修改App1的MainActivity.java的onCreate函数

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent("com.example.luozhenshan.learnintent.intent.action.MyAty"));
                }
            });
        }

    三.运行结果

    如何禁止一个Activity被别的App调用

    将MyAty的exported属性设置为false即可。

     <activity android:name=".MyAty" android:exported="false">
                <intent-filter>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <action android:name="com.example.luozhenshan.learnintent.intent.action.MyAty"/>
                </intent-filter>
            </activity>

    一旦别的应用调用MyAty,程序会抛出异常,因此在App1的MainActivity.java中对异常进行处理

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    try {
                        startActivity(new Intent("com.example.luozhenshan.learnintent.intent.action.MyAty"));
                    }
                    catch(Exception e)
                    {
                        Toast.makeText(MainActivity.this,"can not run the activity",Toast.LENGTH_LONG).show();
                    }
                }
            });
        }

    运行结果

  • 相关阅读:
    Fabric quickly
    jumpserver install
    Docker installs
    快速安装测试版Mysql
    centos7 usually use
    Mysql 通过frm&ibd 恢复数据
    GIT 常用方法
    诸葛亮-诫外甥书
    闭包函数(绑定函数)
    形参和实参
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4707294.html
Copyright © 2011-2022 走看看