您的位置:首页 > 其它

初识intent

2015-09-11 17:02 447 查看
what

intent是一个对象,这个对象包含了一个数据结构,这个数据结构是对一个动作或者意图的抽象描述。有点拗口哈,其实,intent就是一个对象,通过实例化这个对象,我们可以自己定制一个意图,一个意图也就是一个要执行的动作。这个意图可以是启动一个新的activity或者让当前的activity执行一个新的动作,也可以是把一条消息broadcast广播给对该消息感兴趣的多有广播接收者,还可以是初始化并开启一项新的service或者给正在运行的服务发送一些指令。

Why

为什么需要intent,intent的存在可以帮助我们完成以下的事情:

1.从当前Activity打开另一个Activity或者Service ;

2.在Activity或者Services之间传递数据;

3.实现app之间的代理功能。

how

如何使用intent呢?接下来,我们分别举例说明如何使用intent。

1.从当前Activity打开另一个Activity或者Service ;

简单定义两个Activity,实现当前从Activity打开新的Activity

两个activity的代码实现:

public class ActivityA extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.ButtonToActivityB);
button.setOnClickListener(this);

}

@Override
public void onClick(View src) {
Intent i = new Intent(this, ActivityB.class);
startActivity(i);
}
}
public class ActivityB extends Activity implements OnClickListener{

private TextView textView;
@Override
public void onClick(View src) {
Intent i = new Intent(this, ActivityA.class);
startActivity(i);
}

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityb);
Button button = (Button) findViewById(R.id.ButtonToActivityA);
button.setOnClickListener(this);
}
}


运行效果:





2.在Activity或者Services之间传递数据;

两个activity的代码实现:

public class ActivityA extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle bd = getIntent().getExtras();
if(bd!=null){
String text = bd.getString("data");
textView = (TextView) findViewById(R.id.textViewA);
textView.setText(text);
}
Button button = (Button) findViewById(R.id.ButtonToActivityB);
button.setOnClickListener(this);

}

@Override
public void onClick(View src) {
Intent i = new Intent(this, ActivityB.class);
Bundle bd = new Bundle();
bd.putString("data", "data from activityA");
i.putExtras(bd);
startActivity(i);
}
}
public class ActivityB extends Activity implements OnClickListener{

private TextView textView;
@Override
public void onClick(View src) {
Intent i = new Intent(this, ActivityA.class);
Bundle bd = new Bundle();
bd.putString("data", "data from activityB");
i.putExtras(bd);
startActivity(i);
}

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityb);
Bundle bd = getIntent().getExtras();
if(bd!=null){
String text = bd.getString("data");
textView = (TextView) findViewById(R.id.textViewB);
textView.setText(text);
}
Button button = (Button) findViewById(R.id.ButtonToActivityA);
button.setOnClickListener(this);
}
}


运行效果:





3.实现app之间的代理功能。

在当前activity中,调用系统的浏览器,并打开百度网页。

代码实现:

public class ActivityA extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle bd = getIntent().getExtras();
if(bd!=null){
String text = bd.getString("data");
textView = (TextView) findViewById(R.id.textViewA);
textView.setText(text);
}
Button button = (Button) findViewById(R.id.ButtonToActivityB);
button.setOnClickListener(this);

Button buttonBrowser = (Button)findViewById(R.id.ButtonToBrowser);
buttonBrowser.setOnClickListener(this);

}

@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.ButtonToActivityB:
Intent i = new Intent(this, ActivityB.class);
Bundle bd = new Bundle();
bd.putString("data", "data from activityA");
i.putExtras(bd);
startActivity(i);
break;
case R.id.ButtonToBrowser:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
startActivity(intent);
break;

default:
break;
}
}
}


运行效果展示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: