主要内容:
1.多个Activity之间的关系
2.Intent的基本作用
3.在一个Activity当中启动另外一个Activity的方法
4.使用Intent在Activity之间传递数据的基本方法
多个Activiry之间的关系:
如上图所示,两个Activity要进行通信,就需要其中一个Activity使用startActivity方法来和另一个进行沟通。
Intent的基本作用:
一个Intent对象包含了一组信息:
1.Componet name
2.Action
3.Data
3.Category
4.Extras
6.Flags
下面了解下Intent的简单使用方法:
1.创建新的layout文件:
<?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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Intent"
android:textColor="#FF0000"/>
</LinearLayout>
主要就是显示一个TextView。
2.创建新的activity:
右键->new -> class
代码如下:
package com.shanl.intent;
import android.app.Activity;
import android.os.Bundle;
public class OtherActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other_activity);
}
}
主要就是显示layout中的内容
3.注册activity:
在AndroidManifest.xml中加入:
<activity
android:name="com.shanl.intent.OtherActivity"
android:label="OtherActivity"></activity>
进行注册
4.列出第一个activity的src:
package com.shanl.intent;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
buttonListener listener = new buttonListener();
button.setOnClickListener(listener);
}
class buttonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
MainActivity.this.startActivity(intent);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
在监听器中生成Intent对象,设置跳转的activity,天转:
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
MainActivity.this.startActivity(intent);
效果如下:
按下按钮后:
如何使用Intent在activity之间传递数据?
class buttonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
intent.putExtra("abc", "123");
MainActivity.this.startActivity(intent);
}
}
在监听器中调用:intent.putExtra("abc", "123");传进一个键值对abc,它的值为123
在另一个activity中接受键值对:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other_activity);
textView = (TextView)findViewById(R.id.text);
Intent intent = getIntent();
String value = intent.getStringExtra("abc");
textView.setText(value);
}
Intent intent = getIntent();
String value = intent.getStringExtra("abc");
textView.setText(value);
注意:Intent可以在不是同一个应用程序中的activity间传递数据,比如开启一个系统自带的短信发送功能的activity:
在监听器中加入下面代码即可启动短信activity:
Uri uri = Uri.parse("smsto://0800000123");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "The SMS text");
startActivity(intent);