android中的Activity和Intent
2015-08-19 19:56
519 查看
概述
1.android的四大组件分别是:Activity、service、ContentProvider、Broadcast。2.Intent:android中进行通讯的工具,类似java中的包裹。
3.Intent的五个常用方法是:
b)、component:从一个活动中启动另一个活动。
a)、action:
setAction(XXX)-闯入某种ACTION。
setData(Uri):执行相应的功能。
c)、data
d)、type
e)、extras
4.Intent启动活动的三种方式:
a)、直接启动Activity
Intent intent = new Intent(本活动名.this,要启动的活动名.class)
startActivity(intent);
b)、带有返回值的启动
* 第一个界面:调用startActivityForResult(intent,requestCode);
* 第二个界面先调用getIntent()得到要启动的intent;
* 在关闭第二个界面前先封装数据,调用intent.putExtra(key,value),设置resultCode-setResultCode(RESULT_OK,intent),接着调用finish()关闭第二个界面。
* 第一个界面重写onActivityResult()方法,准备接收数据,接收数据时,先判断resultCode。
c)、隐式启动
* 将要启动的活动在manifest中注册,添加intent-filter,在intent-fileter中务必添加action,action的name自定,然后设置category必须为default。
* 在启动界面中使用intent设置action。
代码
Intent的三种启动活动的方法
component直接启动
用component启动活动的方法(现在比较少用):Intent intent = new Intent(); ComponentName componentName = new ComponentName(SecondActivity.this,MainActivity.class); intent.setComponent(componentName); startActivity(intent);
可以用另一种更简单的方法代替:
Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent);
带有返回参数的启动方式
主活动: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_back); //点击按钮启动另一个活动SecondActivity button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivityForResult(intent, 0x23); } }); } /* *用于接收数据 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //判断resultCode是否符合 if(resultCode==RESULT_OK){ textView.setText(data.getStringExtra("back_data").toString()); } } }
被启动的活动:
public class SecondActivity extends Activity { private Button button; private EditText editText; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_2); button = (Button)findViewById(R.id.button_return); editText = (EditText)findViewById(R.id.edit); intent = new Intent(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intent.putExtra("back_data",editText.getText().toString()); setResult(RESULT_OK,intent); SecondActivity.this.finish(); } }); } }
布局:
activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/button_back" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="进入第二个页面"/> </LinearLayout>
layout_2
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入数据"/> <Button android:id="@+id/button_return" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送"/> </LinearLayout>
隐式启动方式
intent.setAction("android.intent.action.test"); startActivity(intent);
manifest中添加的部分
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...... <application ...... <activity android:name="com.example.administrator.myapplication.SecondActivity" android:theme="@style/AppTheme" android:label="the first" > <intent-filter> <action android:name="android.intent.action.test" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
Intent中的action
public class TestIntentAction extends Activity implements View.OnClickListener{ private Button mBtnDial; private Button mBtnCall; private Button mBtnSms; private Button mBtnView; private EditText mEditSms; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_intent_action); mEditSms = (EditText)findViewById(R.id.edit_sms); mBtnDial = (Button)findViewById(R.id.dial_btn); mBtnCall = (Button)findViewById(R.id.call_btn); mBtnSms = (Button)findViewById(R.id.send_btn); mBtnView = (Button)findViewById(R.id.view_btn); mBtnDial.setOnClickListener(this); mBtnCall.setOnClickListener(this); mBtnSms.setOnClickListener(this); mBtnView.setOnClickListener(this); intent = new Intent(); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.dial_btn: //打开打电话的界面 intent.setAction(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:15634219694")); startActivity(intent); break; case R.id.call_btn: //直接拨打电话 intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:15634219694")); startActivity(intent); break; case R.id.send_btn: //进入发送信息的界面 intent.setAction(Intent.ACTION_SENDTO); intent.setData(Uri.parse("smsto:15634219694")); mEditSms.setText(""); startActivity(intent); break; case R.id.view_btn: //进入浏览器 intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu/com")); startActivity(intent); break; default: break; } } }
以上代码中ACTION_PHONE需要申请权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...... <uses-permission android:name="android.permission.CALL_PHONE"/> ...... </manifest>
相关文章推荐
- Android之玩转选项卡(TabHost、TabWidget、FrameLayout)
- Android 中对于图片的内存优化方法
- android 处理图片之--bitmap处理
- Android 入门(1)
- Android_ConnectivityManager连接管理
- Android 使用外部db数据库文件
- Android动态设置actionBar
- Android之如何改变焦点状态【EditText】
- Android的全屏、标题栏、横竖屏设置
- Android Togglebutton 默认背景被放大
- android4.4修改设置中默认定位模式
- ListView、ScrollView、GridView滑动到顶端或底部的阴影效果去掉
- android studio中文乱码的解决方法【转】
- Android之——ContentResolver查询的三种方式
- Android Studio下Intent隐式启动,发短信,拨号,打电话,访问网页
- android开发 解决启动页空白或黑屏问题
- android BitmapUtil 工具类
- ListView 滑动时数据重复错位解决
- Android播放gif动画,增加屏幕掉金币效果
- Android播放gif动画,增加屏幕掉金币效果