从零开始学android<Intent初步.四十.>
Intent意图是android中非常重要的部分,他在Activity,service中有较为广泛的应用。
1
|
public void startActivity(Intent intent)
|
普通
|
启动一个Activity,并通过Intent传送数据
|
2
|
public void startActivityForResult(Intent intent, int requestCode)
|
普通
|
启动并接收另一个Activity程序回传数据,当requestCode大于0才可以触发onActivityResult()
|
3
|
public Intent getIntent()
|
普通
|
返回启动当前Activity程序的Intent
|
4
|
protected void onActivityResult(int requestCode, int resultCode, Intent data)
|
普通
|
当需要接收Intent回传数据的时候覆写此方法对回传操作进行处理
|
5
|
public void finish()
|
普通
|
调用此方法会返回之前的Activity程序,并自动调用onActivityResult()方法
|
6
|
public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
|
普通
|
处理返回的Cursor结果集
|
接下里用例子逐步讲解
最简单的Intent
主界面xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="141dp" android:text="转跳" /> </RelativeLayout>
转跳界面Xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是第二屏界面" /> </RelativeLayout>
package com.example.intent1; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; 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) this.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, Other.class);//创建Intent 对象 startActivity(intent);//开启intent MainActivity.this.finish();//使当前Activity结束 } }); } }
Otner.java
package com.example.intent1; import android.app.Activity; import android.os.Bundle; import android.text.style.SuperscriptSpan; public class Other extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); } }
接下来看一看可以传递数据的Intent
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="传递" /> <EditText android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:ems="10" android:text=" /> </RelativeLayout> <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="传递" /> <EditText android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:ems="10" android:text="" /> </RelativeLayout>
Other.xml
<?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/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" /> <Button android:id="@+id/button2" android:gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取数据" /> </LinearLayout>
java文件
package com.example.intent2; import android.os.Bundle; import android.R.integer; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private Button button; private EditText info; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)this.findViewById(R.id.button1); info=(EditText)this.findViewById(R.id.edit); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,Other.class);//设置意图 intent.putExtra("info", info.getText().toString());//为意图增加附加信息 startActivity(intent);//开始意图 MainActivity.this.finish();//终止当前Ativity } }); } }
Other.java
package com.example.intent2; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Other extends Activity { Intent intent; private Button button; private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); super.setContentView(R.layout.other); button=(Button)this.findViewById(R.id.button2); text=(TextView)this.findViewById(R.id.textView1); intent=super.getIntent();//获取意图对象 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String info=intent.getStringExtra("info");//获取传递的数据 text.setText(info);//显示数据 } }); } }
使用Intent传递并返回数据
借助Intent实现成人身高体重测试程序采用BMI 法 体重指数 = 体重(公斤) 除 身高(米)的平方 kg/m2 正常体重 : 体重指数 = 18 - 25 超重 : 体重指数 = 25 - 30 轻度肥胖 : 体重指数 > 30 中度肥胖 : 体重指数 > 35 重度肥胖 : 体重指数 > 40
xml
package com.example.inten3; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private Button resetInfo,getInfo; private EditText height,weight; private TextView detail; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); resetInfo=(Button)this.findViewById(R.id.button1);//重置信息按钮 getInfo=(Button)this.findViewById(R.id.button2);//获取信息按钮 height=(EditText)this.findViewById(R.id.editText1);//身高输入框 weight=(EditText)this.findViewById(R.id.editText2);//体重输入框 detail=(TextView)this.findViewById(R.id.textView3);//信息显示 // 重置按钮的监听 resetInfo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //将他们都设置为空 weight.setText(""); height.setText(""); detail.setText(""); } }); // 获取信息按钮的监听 getInfo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent =new Intent(MainActivity.this, Other.class);//创建意图对象 // 增加附加信息 intent.putExtra("weight", Double.valueOf(weight.getText().toString())); intent.putExtra("height", Double.valueOf(height.getText().toString())); //设置启动并传递请求码 startActivityForResult(intent, 1); } }); } // 处理返回的信息 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub switch (resultCode) { case RESULT_OK: //设置信息 MainActivity.this.detail.setText(data.getStringExtra("endMsg")); break; default: break; } } }
Other.java
package com.example.inten3; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class Other extends Activity { private Button returnMsg, resetbut; private TextView weightMsg, heightMsg; private Double weight, height; private String endMsg; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); super.setContentView(R.layout.other); returnMsg = (Button) this.findViewById(R.id.Otherbutton1); resetbut = (Button) this.findViewById(R.id.Otherbutton2); weightMsg = (TextView) this.findViewById(R.id.OthertextView1); heightMsg = (TextView) this.findViewById(R.id.OthertextView2); // 获取意图对象 Intent intent = super.getIntent(); // 获得参数 weight = intent.getDoubleExtra("weight", 0); height = intent.getDoubleExtra("height", 0); weightMsg.setText("您的体重:" + weight + "KG"); heightMsg.setText("您的身高:" + height + "CM"); returnMsg.setOnClickListener(new View.OnClickListener() { // 对传入的数据进项判断和处理 @Override public void onClick(View v) { // TODO Auto-generated method stub Double heightNum = height / 100; double endNum = weight / (heightNum * heightNum); if (endNum >= 18 && endNum <= 25) { endMsg = "您的身体很正常哦,继续保持亲。"; } else if (endNum < 18) { endMsg = "亲啊,不能总是减肥啊,您现在可是偏瘦哦,当心身体"; } else if (endNum > 25 && endNum <= 30) { endMsg = "您现在有一点胖哦,不过不要紧,要注意饮食哦"; } else if (endNum > 30 && endNum <= 35) { endMsg = "亲,您已经进入肥胖人群 了哦,注意锻炼哦"; } else if (endNum > 35) { endMsg = "额,你,你。。你怎么可以这样,还不赶快减肥,当心找不到对象哦"; } // 将参数设置到intnet上 Other.this.getIntent().putExtra("endMsg", endMsg); // 设置返回集,并设置返回接受码 Other.this.setResult(RESULT_OK, Other.this.getIntent()); // 将dangqianActivity结束掉 Other.this.finish(); } }); // 重新输入监听 resetbut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 设置返回集合取消状态码 Other.this.setResult(RESULT_CANCELED, Other.this.getIntent()); // 结束当前Activity Other.this.finish(); } }); } }
学习了intent的基本用途,下节我们来学习Intent调用系统指令来完成一些其他操作
下节预报:Intent进阶
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。