Activity与intent

来源:互联网 发布:自学plc编程 编辑:程序博客网 时间:2024/06/10 05:03

1. 概念

    什么是Activity?

    链接

   什么是Intent?

   Intent是一种运行时绑定(runtime binding)机制,它能在程序运行过程中连接两个不同组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。这些组件的通讯,主要是由Intent协助完成的。

  

2. 例子: 单击MainActivity的Button控件, 会跳到OtherActivity的Button控件

    一、对于MainActivity:

   ① MainActivity的Activity已经在AndroidMainfest.xml中注册,暂且不管;

   ②layout布局:添加一个TextView和一个Button

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         />
   <Button
       android:id="@+id/button1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       />"
   </LinearLayout>

    二、对于OtherActivity:

    ①在AndroidMainfest.xml中注册Activity

         <activity
            android:name=".OtherActivity"  //注意名字一定要与src中的源文件一致
            android:label="@string/other_name"></activity>

    ②layout布局

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         />
   <Button
       android:id="@+id/button2"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       />
    </LinearLayout>

     ③ 回到源文件中对控件进行设置

          public class OtherActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_other);

        TextView textView2 = (TextView)findViewById(R.id.textView2);
        textView2.setText(R.string.other_name);
        Button button2 = (Button)findViewById(R.id.button2);
        button2.setText(R.string.other_name);
    }
}

三、回到MainActivity中

       protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView1 = (TextView)findViewById(R.id.textView1);
        textView1.setText(R.string.app_name);
        Button button1 = (Button)findViewById(R.id.button1);
        button1.setText(R.string.hello_world);
        button1.setOnClickListener(new MyButtonListener());  //设置监听事件
    }
    class MyButtonListener implements OnClickListener{

        @Override
        public void onClick(View v) { //单击时的动作
            // TODO Auto-generated method stub
            Intent intent = new Intent();   //Intent对象
            intent.setClass(MainActivity.this, OtherActivity.class);  //  单击时从MainActivity 跳到OtherActivity
            MainActivity.this.startActivity(intent);// 执行intent
        }
        
    }

3.  intent传递数据

      MainActivity中

               Intent intent = new Intent();
            intent.putExtra("data", "12345");

     OtherActivity中

             Intent intent = getIntent();
        String value = intent.getStringExtra("data");

4.  intent的menu控件使用

public boolean onCreateOptionsMenu(Menu menu) {   //添加menu控件的选项
        // TODO Auto-generated method stub
        menu.add(0, 1, 1, R.string.exit);  // 控件号    选项条目号   选项条目的排序    标题
        menu.add(0, 2, 2, R.string.about);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) { //当单击控件时跳到该函数
        // TODO Auto-generated method stub
        if (item.getItemId() == 1)
            finish();
        return super.onOptionsItemSelected(item);
    }

0 0
原创粉丝点击