編輯:關於Android編程
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
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結束
}
});
}
}
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
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjxwcmUgY2xhc3M9"brush:java;">
Other.xml
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;
}
}
}
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進階
直接拿來用的Android刮獎控件
直接上效果圖 功能特色: 1、可以設置刮開後顯示文字或圖片 2、可以統計已刮開區域所占百分比 Demo下載地址:RubberDem
Android ScrollView只能添加一個子控件問題解決方法
本文實例講述了Android ScrollView只能添加一個子控件問題解決方法。分享給大家供大家參考,具體如下:有下面一段代碼<?xml version=
怎麼修改手機qq字體 如何修改手機qq字體顏色
手機qq聊天字體用膩了怎麼修改,字體顏色又是怎麼修改的呢?具體操作如下,一起來看看吧!如何修改手機qq字體顏色用手機管理器進入 E:System→
《從JAVA到Android》JAVA篇之認識JAVA
標識符和關鍵字 基本數據類型 常量與變量 運算符 數據類型轉換 注釋及代碼編寫規范等1、標識符和關鍵字通俗的講,標識符就是程序員自己起的一個名稱(包括變量名,類名,方法名