【Android开发学习笔记】【第三课】Activity和Intent
首先来看一个Activity当中启动另一个Activity,直接上代码说吧:
(1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件
<?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/MyTest" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
(2)加入一个 src 下加入一个类文件(java里是这么说的吗,我一直在搞c++,不太清楚java里面的属于怎么说)
记住类一定要 继承Activity ( public class *** extends Activity ),然后重写 onCreate 方法
package com.example.cart; import android.R.string; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class OtherActivity extends Activity { private TextView mytext = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.othery); mytext = (TextView)findViewById(R.id.MyTest); mytext.setText("hello activity"); } }
这个Activity呢,其实很简单就是只有一个TextView,内容就是“hello activity”
(3)接下来我们需要在 AndroidManifest.xml 当中注册这个Activity
(4)我们需要在主的activity当中去调用,具体的做法是 首先在主Activity的布局是只有一个按钮,然后我们监听这个按钮按下事件,
按下这个按钮就会通过Intent来调用另一个Activity,也就是我们上面创建的Activity,下面是代码:
package com.example.cart; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.content.DialogInterface; import android.content.Intent; import android.view.View.OnClickListener; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.os.Build; public class MainActivity extends Activity { public Button mybutton = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mybutton = (Button)findViewById(R.id.MyButton); mybutton.setText("nihao-ha2ha"); mybutton.setOnClickListener(new MyButtonListen()); } class MyButtonListen implements OnClickListener { @Override /* 如果遇到 aetOnclickListener报错的时候,按照下面来做:
1.把 onClick(DialogInterface arg0, int arg1) 改成 onClick(View v)
2.把 import android.content.DialogInterface.OnClickListener; 改成 import android.view.View.OnClickListener; */
public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, OtherActivity.class); MainActivity.this.startActivity(intent); } } }
(5) 运行程序之后,首先进入第一个Activity,点击了按钮了之后调转到了第二个Activity
接下来尝试一个Activity当中启动另一个Activity的时候,传递数据给另一个Activity:
Intent包含:ComponentName、Action、Data、Extras、Category、Flags,我们就将使用Extra来进行数据的传递
(1)主Activity当中这样调用
Intent intent = new Intent(); intent.putExtra("testintent", "ccyy"); intent.setClass(MainActivity.this, OtherActivity.class); MainActivity.this.startActivity(intent);
(2)接受端是这样的
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.othery); Intent intent = getIntent(); String myvalue = intent.getStringExtra("testintent"); mytext = (TextView)findViewById(R.id.MyTest); mytext.setText("hello activity" + myvalue); }
当然,Intent进行数据传递的时候,不仅可以在同一个应用程序的不用Activity直接进行传递,而且可以进行不同应用程序的调用和数据传递:
下面通过Uri调用发短信的界面来进行说明,代码还是加到刚才的按钮相应中:
Uri uri = Uri.parse("smsto:13008574656"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "hi,I am a student~"); MainActivity.this.startActivity(intent);
运行之后,点击按钮进入到发短信的界面:
这次学习主要理解了:
1.多个Activity
2.Intent的基本作用
3.一个Activity当中启动另一个Activity
4.使用Intent在Activity之间传递数据