• 毕设记录(三)


    第二讲

    添加意图

    在添加意图之前的准备工作:目前只有一个窗口,因此要新建一个(?),可以叫SecondActivity,具体方法如下

    那么这就相当于新的一个界面了,在新的界面中,我们可以看到与之前的初始界面一样的onCreate,里面同样有
    setContentView(R.layout.activity_second);//加载布局
    我们可以看到Mainifests文件中,AS已经帮我们创建好第二个活动了
    <activity android:name=".SecondActivity"></activity>
    分析第一个活动的信息:

    <!-- 间接寻址 -->
            <activity android:name=".MainActivity">
                <!-- 意图过滤器 -->
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <!--主Activity-->
                    <category android:name="android.intent.category.LAUNCHER" />
                    <!--发射器,应用程序中首先调被启动的-->
                </intent-filter>
            </activity>
    

    我们也可以仿照设计第二个活动

    显示Intent

    我们想要的功能是点击按钮打开第二个页面

    在点击按钮那里添加

    //显示Intent,指名道姓的说想要调用那个意图
    Intent intent=new Intent(MainActivity.this,SecondActivity.class);
    //意图自己不会启动,手动启动
    startActivity(intent);
    

    隐式Intent

    在Mainifest中添加:

    <activity android:name=".SecondActivity">
          <intent-filter>
              <action android:name="android.intent.action.START_ACTION"/>
              <category android:name="android.intent.category.DEFAULT"/>
          </intent-filter>
    </activity>
    

    其中,action_name可以自己起(?)
    在MainActivity处添加:

    //隐式Intent
    Intent intent=new Intent("android.intent.action.START_ACTION");
    //第一个参数为活动名,最好复制,第二个为category,因为是default所以不写
    startActivity(intent);
    

    通过隐式Intent调用系统应用

    以拨号为例

    //通过隐式Intent调用系统应用
    Intent intent =new Intent();
    intent.setAction(Intent.ACTION_CALL);//调用拨号系统应用
    intent.setData(Uri.parse("tel:15665869115"));//给他数据
    startActivity(intent);
    

    运行发现报错

    查看错误信息

    发现是没有申请用户权限,在Mainifest中,application外面添加:

    <!-- 向用户申请打电话的权限 -->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    

    再次运行,发现还是不报错,原因是我们没有在手机中打开权限,app只是申请了,但是我们没有给他
    在设置的应用权限中找到应用,在所有应用中找到,我们的app给他打开打电话的权限即可
    再次运行成功

    intent.setAction(Intent.ACTION_DIAL);//调用拨号系统应用
    

    DIAL和CALL的区别如图:

    一些诸如此类的调用

    • 打开设置窗口
    intent.setAction("android.settings.SETTINGS");//打开设置
    
    • 打开联系人列表
    intent.setAction("com.android.contacts.action.LIST_CONTACTS");//打开联系人列表
    

    具体其他的可见文档。

    用Intent传递数据

    用到的是intent.putExtra()
    可以看到有很多的重载方法

    Main向SecondActivity传递

    在Main中添加显示Intent如下:

    Intent intent=new Intent(MainActivity.this,SecondActivity.class);
    intent.putExtra("Data","Hello SecondActivity");//名为Data,值为"Hello SecondActivity"
    startActivity(intent);
    

    这只是完成了传出,同时SecondActivity还要接受

    //新建intent但是不用new,是getIntent(),接收来自intent的数据
    Intent intent = getIntent();
    //接收名称为Data的数据
    String data=intent.getStringExtra("Data");
    //用日志打印一下检验是否接收成功,标签,传递的(显示的)数据
    Log.d("SecondActivity",data);
    

    日志信息如下

    从SecondActivity向Main传递

    Main中添加:

    Intent intent=new Intent(MainActivity.this,SecondActivity.class);
    startActivityForResult(intent,1);//1是用来区别请求和响应的
    

    同时接收

    @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            //super.onActivityResult(requestCode, resultCode, data);
            switch (requestCode) {
                case 1:
                    if (resultCode == RESULT_OK) {
                        String resultData = data.getStringExtra("data_return");
                        Log.d("MainActivity", resultData);
                    }
                    break;
            }
        }
    

    而SecondActivity作为发送方,需要在按钮添加监听以达到点击跳转并发送数据的目的:

     /*
    初始化窗口
    */
        public void initView(){
            button2 = findViewById(R.id.button2);
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent();
                    intent.putExtra("data_return","Hello MainActivity");
                    setResult(RESULT_OK,intent);//RESULT_OK=-1
                    finish();//关闭窗口
                }
            });
        }
    

    别忘了将initView方法添加到onCreat方法中。
    可以看到运行:

  • 相关阅读:
    寒假作业1
    自我介绍
    我罗斯方块1
    我罗斯方块
    解题报告 数学2
    解题报告 转化模式
    解题报告 数学
    经典语录
    解题报告 Trick
    解题报告 帮忙
  • 原文地址:https://www.cnblogs.com/LOW-ctfer/p/14268625.html
Copyright © 2020-2023  润新知