zoukankan      html  css  js  c++  java
  • Android 入门学习 二

    上一篇已经学习了但见一个简单页面,有输入框,有按钮,但是不能点击,此篇文章将会学习如何进行页面跳转,启动其他的Activity

    响应send(发送)按钮

    • 首先创建一个新的Activity DisplayMessageActivity 用来跳转
    • 打开res/layout目录下的activity_my.xml 文件
    • 给 Button 标签添加android:onclick属性(android:onclick 属性的值就是当用户点击你屏幕按钮时触发方法的名字)
    代码示例
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_send"
            android:onClick="sendMessage"/>
    
    • 在java/com.mycompany.myfirstapp目录下MainActivity.java 文件中添加 sendMessage() 方法,方法名称必须和android:onClick 属性中提供的方法名一致
    public void sendMessage(View view){} //view类型,代表被点击的视图
    

    必须满足以下条件:

    1. 是Public函数
    2. 没有返回值
    3. 有唯一的参数
    • sendMessage() 方法

      • Intent : 不同组件中提供运行是连接的对象。Intent 代表一个应用"想去做什么事",你可以用它做各种各
        样的任务,不过大部分的时候他们被用来启动另一个Activity
      • findViewById() : 取得元素
    MainActivity代码示例
     public void sendMessage(View view) {
            /**
             * Intent构造函数中有两个参数
             * 1.第一个参数是Context(用 this 是因为当前Activity是 Context 的子类)
             * 2.接收系统发送的Intent的应用组件的class对象(被启动的 DisplayMessageActivity)
             * 3.
             * */
            Intent intent = new Intent(this, DisplayMessageActivity.class);
            //用findViewById()方法得到EditText元素
            EditText editText = findViewById(R.id.edit_message);
            String message = editText.getText().toString();
            /**
             * 1.将EditText 的文本内容关联到本地变量并通过putExtra()方法传值Intent
             * 2.EXTRA_MESSAGE:让新启动的activity能查询,定义key为一个public型的常量,通常使用应用程序
             * 包名作为前缀来定义意图键是很好的做法.在应用程序与其他应用程序进行交互时仍可以确保意图键唯一。
             * 3.Intent 可以携带各种数据类型的集合的key-value附加对,称作extras。 putExtra()方法把键名
             * 作为第一个参数,把值作为第二个参数。
             * */
            intent.putExtra(EXTRA_MESSAGE, message);
            //启动新的activity
            startActivity(intent);
        }
    

    sendMessage()方法完成后需要启动新的Activity 也就是我们之前创建的 DisplayMessageActivity

    • 首先需要得到Intent 并赋值给本地变量
    Intent intent = getIntent()
    
    • 然后将MyActivity 传递过来的文本使用 getStringExtra() 获取
    String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
    
    • 然后创建TextView 对象并赋值
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);
    textView.setTextColor(Color.parseColor("#ff7f50"));
    
    • 最后通过setContentView() 方法把TextView作为activity布局的根视图
    setContentView(textView)
    
    DisplayMessageActivity 代码示例
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_message);
            //得到intent 并赋值给本地变量
            Intent intent =getIntent();
            //传递过来的文本使用 getStringExtra()
            String message =intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
            /**
             * setTextSize() 设置文本字体字体大小
             * setText() 设置文本内容
             * setTextColor() 设置字体颜色
             * */
            TextView textView = new TextView(this);
            textView.setTextSize(40);
            textView.setText(message);
            textView.setTextColor(Color.parseColor("#ff7f50"));
            //通过调用activity的setContentView()把TextView作为activity布局的根视图
            setContentView(textView);
        }
    
    运行示例

    至此已经学会如何跳转新的Activity

  • 相关阅读:
    HDU 2095 find your present (2) (异或)
    UESTC 486 Good Morning (水题+坑!)
    UVa 111 History Grading (简单DP,LIS或LCS)
    UVa 11292 Dragon of Loowater (水题,排序)
    HDU 1503 Advanced Fruits (LCS+DP+递归)
    UVa 10881 Piotr's Ants (等价变换)
    UVa 11178 Morley's Theorem (几何问题)
    HDU 1285 确定比赛名次(拓扑排序)
    .net Core的例子
    TCP与UDP的区别
  • 原文地址:https://www.cnblogs.com/xiaoxiaoliu/p/11003834.html
Copyright © 2011-2022 走看看