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>
  • 相关阅读:
    mac 通过SSH连接服务器aws和github
    Android开发 View与Activity的生命周期[转载]
    Android开发 APP闪退Fragment重叠泄露问题
    3月3日 一堆一堆事
    杭州.net俱乐部 新开qq群
    招聘 .net 开发工程师
    852009
    872009
    01背包和完全背包
    8142009
  • 原文地址:https://www.cnblogs.com/xiaojihua20/p/4182456.html
Copyright © 2011-2022 走看看