zoukankan      html  css  js  c++  java
  • 第一个android程序,Activity小实例

    本实例有3个界面(Activity)。activity_main界面有两个按钮,Button1和Button2。Button1单击后会跳转到activityb,Button2单击后会跳转到activityc。activityc有一个输入框和一个“确定”按钮,单击“确定”按钮将关闭activityc,并将输入框中的内容回传到activity_main中。activity_main获取到activityc的回传数据后,将其内容显示在Button2的下方。各界面的布局效果如下:

      

      

    编程实现

    1、新建一个android项目(过程省略),新建的项目中默认会自动创建activity_main界面及对应的MainActivity.java,我们只需要再添加activityb和activityc界面即可。在layout目录下添加activityb.xml和activityc.xml文件,在src目录下添加ActivityB.java和ActivityC.java文件。添加后,此项目工程目录如下:

     2、编辑activity_main.xml,添加两个按钮和一个TextView,完成后内容大致如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/buttona1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/buttona1_text" />
    
        <Button
            android:id="@+id/buttona2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/buttona2_text" />
    
        <TextView
            android:id="@+id/tvDisplay"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

    3、编辑activityb.xml,添加一个TextView,完成后内容大致如下:

    <?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" >
    
        <TextView
            android:id="@+id/tvActivityb"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/activityb_tv_text" />
    
    </LinearLayout>

    4、编辑activityc.xml,添加一个EditText和一个按钮,完成后内容大致如下:

    <?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" >
    
        <EditText
            android:id="@+id/etActivityc"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="text" >
    
            <requestFocus />
        </EditText>
    
        <Button
            android:id="@+id/buttonc1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/buttonc1_text" />
    
    </LinearLayout>

     5、编辑MainActivity.java。MainActivity.java中定义了类MainActivity。MainActivity继承自Activity,以activity_main.xml定义的界面为显示界面。请注意代码中启动其它Activity的方式。如果想从启动的其它Activity中获取返回信息,使用startActivityForResult,否者使用startActivity。使用startActivityForResult启动的Activity调用setResult时onActivityResult方法会被调用,所以为了获取返回信息就需要重新实现onActivityResult方法。

    startActivityForResult有两个参数,第一个是Intent对象,第二个为请求码,用于区分不同的请求。例如,通过startActivityForResult启动了多个Activity,当这些Activity调用setResult时onActivityResult都会被调用,那在onActivityResult中如何区分返回信息来自哪个Activity呢?这时就可以通过请求码来区分。Activity关闭时,相关请求码会传入onActivityResult方法中,所以在处理时可以根据请求码区分不同Activity的返回信息。MainActivity.java内容如下:

    package com.helloworld.helloworldproject;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.content.Intent; 
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //取得activity main中的两个button
            Button buttona1 = (Button)findViewById(R.id.buttona1);
            Button buttona2 = (Button)findViewById(R.id.buttona2);
            
            //为buttona1绑定单击事件
            buttona1.setOnClickListener(new buttona1_Listener());
            buttona2.setOnClickListener(new buttona2_Listener());
        }
        
        //buttona1单击事件处理类
        private class buttona1_Listener implements View.OnClickListener
        {
            public void onClick(View v)
            {
                //TODO Auto-generated method stub
                //使用intent启动ActivityB
                Intent _intent = new Intent(MainActivity.this, ActivityB.class);
                startActivity(_intent);
            }
        }
        
        //buttona2单击事件处理类
        private class buttona2_Listener implements View.OnClickListener
        {
            public void onClick(View v)
            {
                //TODO Auto-generated method stub
                //使用intent启动ActivityC
                Intent _intent = new Intent(MainActivity.this, ActivityC.class);
                startActivityForResult(_intent, 100);
            }
        }
        //通过setContentView启动的Activity返回时,此方法被调用
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            if(requestCode == 100 && resultCode == Activity.RESULT_OK)
            {
                String val = data.getExtras().getString("helloworld");
                TextView textView = (TextView)findViewById(R.id.tvDisplay);
                textView.setText("来自ActivityC的值: "+val);
            }
        }
    }

      6、编辑ActivityB.java。ActivityB.java中定义了类ActivityB。ActivityB继承自Activity,以activityb.xml定义的界面为显示界面。ActivityB.java内容如下:

    package com.helloworld.helloworldproject;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class ActivityB extends Activity
    {
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activityb);
        }
    }

      7、编辑ActivityC.java。ActivityC.java中定义了类ActivityC。ActivityC继承自Activity,以activityc.xml定义的界面为显示界面。ActivityC.java内容如下:

    package com.helloworld.helloworldproject;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class ActivityC extends Activity
    {
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activityc);
            Button buttonc1 = (Button)findViewById(R.id.buttonc1);
            buttonc1.setOnClickListener(new buttonc1_Listener());
        }
        
        private class buttonc1_Listener implements View.OnClickListener
        {
            public void onClick(View v)
            {
                Intent data = new Intent();
                EditText editText = (EditText)findViewById(R.id.etActivityc);
                String val = editText.getText().toString();
                //将键值对存入Intent的对象
                data.putExtra("helloworld", val);
                //将Intent对象传回父Activity
                setResult(Activity.RESULT_OK, data);
                //关闭当前Activity
                finish();
            }
        }
    }

    8、在AndroidManifest.xml中注册Activity。这是最容易被忽视的一步,需要注意。在AndroidManifest.xml添加以下代码:

            <activity android:name="com.helloworld.helloworldproject.ActivityB"></activity>
            <activity android:name="com.helloworld.helloworldproject.ActivityC"></activity>
  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/xiaojihua20/p/4182456.html
Copyright © 2011-2022 走看看