亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android學習筆記--Activity中使用Intent傳值示例代碼

2020-04-11 12:07:07
字體:
來源:轉載
供稿:網友
Intent,又稱為意圖,是一種運行時綁定機制,它能在程序運行的過程中鏈接兩個不同的組件(Activity、Service、BroadcastReceiver)。通過Intent,程序可以向Android表達某種請求或意愿,Android會根據意愿的內容選擇適當的組件來請求。

在這些組件之間的通訊中,主要是由Intent協助完成的。Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將Intent傳遞給調用的組件,并完成組件的調用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦。
通過Intent請求Activity,必須在AndroidManifest.xml文件中對被請求的Activity新增標簽配置,否則會導致錯誤。

Intent一般包含兩個主要信息,action、data。
action:表示這個Intent此次操作的動作。
data:表示這次動作涉及的數據。

通過一個例子來展示Activity中使用Intent導向新Activity并傳遞數據。此程序僅在兩個頁面之間相互跳轉,但是每次跳轉會創建新的Activity,所以在startActivity()之后需要調用finish()銷毀當前Activity,如果不銷毀,多次跳轉后,程序的Activity棧中會存放多個Activity,點擊設備的返回按鈕,會發現會一直向后退。

主要步驟:
新建Android項目,增加新布局文件other.xml,新增Activity類otherActivity.class,用于接受Intent并展示other.xml。
在MainActivity類中,聲明一個Intent類,通過Intent的構造函數指明源和目標。
獲得Intent后,使用Intent.putExtra()方法對其傳入數據。
調用Activity.startActivity啟動這個Intent。
在otherActivity類中,使用Activity.getIntent()獲得當前Activity的Intent。
獲得Intent后,使用Intent.getXxxExtra()方法獲得其中保存的數據。
在AndroidManifest.xml配置otherActivity節點。

示例代碼
步驟2--3:
復制代碼 代碼如下:

public class MainActivity extends Activity {
private TextView textView;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.textView1);
btn=(Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent構造函數:Intent來源;Intent目的。
Intent intent =new Intent(MainActivity.this,otherActivity.class);
intent.putExtra("data", "當前是頁面2,信息來自頁面1");
startActivity(intent);//啟動Activity
finish();
}
});
}
}

步驟4--5:
復制代碼 代碼如下:

public class otherActivity extends Activity {
private Button btn;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
textView=(TextView)findViewById(R.id.textView2);
btn=(Button)findViewById(R.id.button2);
//通過Activity.getIntent()獲取當前頁面接收到的Intent。
Intent intent =getIntent();
//getXxxExtra方法獲取Intent傳遞過來的數據
String msg=intent.getStringExtra("data");
textView.setText(msg);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(otherActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
});
}
}

步驟7:
復制代碼 代碼如下:

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="cn.bgxt.IntentForAc.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".otherActivity"/>
</application>

從Activity中返回數據
上面例子中只是介紹了Activity通過Intent傳遞數據,然而在實際應用中,不僅僅需要向Activity傳遞數據,而且要從Activity中返回數據,雖然返回數據和傳遞數據類似,但是還是有部分區別。
主要區別如下:
傳遞數據需要使用Activity.startActivityForResult()方法啟動Activity,需要傳遞請求碼,而不是Activity.startActivity()。
返回數據的時候,調用Activity.setResult()方法設置返回Intent以及返回碼。
需要重寫源Activity的onActivityResult()方法以便于接受返回的Intent,在onActivityResult()中會判斷請求碼和響應碼。
通過一個例子說明從Activity返回數據。此程序有兩個Activity,在MainActivity中輸入加法運算的計算數,跳轉到otherActivity中輸入計算結果,并在點擊返回后,把計算結果輸出到MainActivity中。
示例代碼
MainActivity:
復制代碼 代碼如下:

public class MainActivity extends Activity {
private EditText one,two,result;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one=(EditText)findViewById(R.id.one);
two=(EditText)findViewById(R.id.two);
result=(EditText)findViewById(R.id.result);
btn=(Button)findViewById(R.id.btnGo);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int ione=Integer.parseInt(one.getText().toString());
int itwo=Integer.parseInt(two.getText().toString());
Intent intent=new Intent(MainActivity.this, otherActivity.class);
intent.putExtra("one", ione);
intent.putExtra("two", itwo);
//啟動需要監聽返回值的Activity,并設置請求碼:requestCode
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//當otherActivity中返回數據的時候,會響應此方法
//requestCode和resultCode必須與請求startActivityForResult()和返回setResult()的時候傳入的值一致。
if(requestCode==1&&resultCode==2)
{
int three=data.getIntExtra("three", 0);
result.setText(String.valueOf(three));
}
}
@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;
}
}

otherActivity:
復制代碼 代碼如下:

public class otherActivity extends Activity {
TextView tvShow;
EditText etResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
tvShow=(TextView)findViewById(R.id.tvShow);
etResult=(EditText)findViewById(R.id.etResult);
Intent intent=getIntent();
int a=intent.getIntExtra("one", 0);
int b=intent.getIntExtra("two", 0);
tvShow.setText(a+" + "+b+" = "+" ? ");
Button btnResult=(Button)findViewById(R.id.btnReturn);
btnResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//新聲明一個Intent用于存放放回的數據
Intent i=new Intent();
int result=Integer.parseInt(etResult.getText().toString());
i.putExtra("three", result);
setResult(2, i);//設置resultCode,onActivityResult()中能獲取到
finish();//使用完成后結束當前Activity的生命周期
}
});
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩久久午夜影院| 97精品久久久中文字幕免费| 欧美日韩中国免费专区在线看| 亚洲影院色无极综合| 成人有码视频在线播放| 亚洲一区二区久久久| 欧美中文字幕视频在线观看| 色综合老司机第九色激情| 136fldh精品导航福利| 欧美重口另类videos人妖| 日韩国产高清视频在线| 日韩中文字幕在线精品| 亚洲精品欧美极品| 亚洲欧美一区二区三区情侣bbw| 大胆人体色综合| 精品久久久久久亚洲精品| 亚洲亚裔videos黑人hd| 久久夜色撩人精品| 国产日本欧美在线观看| 成人免费大片黄在线播放| 国产精品视频区1| 久久精品久久精品亚洲人| 国产精品一区久久| 欧日韩在线观看| www.亚洲人.com| 国产精品免费视频久久久| 亚洲国产精品va在看黑人| 亚洲一区二区三区四区在线播放| 亚洲国产成人精品一区二区| 91精品国产自产91精品| 亚洲精品日韩激情在线电影| 欧美丰满少妇xxxxx做受| 91久久在线视频| 国产精品久久久久国产a级| 国产精品视频最多的网站| 伊人久久免费视频| 91精品在线观| 日韩av快播网址| 久久久久国产精品www| 国产精品偷伦视频免费观看国产| 欧美日韩一区免费| 国产91精品最新在线播放| 亚洲激情视频在线| 亚洲一区二区久久久久久久| 国产成人中文字幕| 国产成人一区二区在线| 亚洲综合在线中文字幕| 久久精品中文字幕一区| 国产亚洲一区二区精品| 欧美激情一级欧美精品| 中文字幕亚洲欧美在线| 亚洲黄色av网站| 成人性生交大片免费看小说| 久久久电影免费观看完整版| 夜夜嗨av色综合久久久综合网| 日韩中文综合网| 国产美女精品视频| 日韩专区中文字幕| 日本精品性网站在线观看| 国产91精品久久久久久久| 国产一区二区美女视频| 成人精品在线视频| 日韩av网址在线| 国产精品日韩欧美综合| 欧美激情在线视频二区| 97在线看免费观看视频在线观看| 国产精品美女视频网站| 亚洲男人天堂古典| 成人免费在线视频网站| 成人综合网网址| 亚洲天堂2020| 日韩欧美一区二区三区久久| 91久久久久久久一区二区| 亚洲人成电影网站色www| 亚洲第一视频网| 91高清免费视频| 国产精品成人在线| 国产精品揄拍500视频| 欧美精品激情视频| 欧美天天综合色影久久精品| 欧美激情在线播放| 日韩免费视频在线观看| 国产日韩在线看| 91久久久久久久久久| 91视频免费在线| 日韩成人av在线| 57pao成人国产永久免费| 日韩美女写真福利在线观看| 中文字幕一区二区精品| 亚洲视频专区在线| 亚洲精品色婷婷福利天堂| 欧美最猛性xxxxx免费| 日韩精品中文在线观看| 欧美激情国产日韩精品一区18| 性夜试看影院91社区| 久久人人爽人人爽人人片亚洲| 日韩不卡在线观看| 中文字幕av一区二区三区谷原希美| 国产精品久久久久av| 欧美丰满少妇xxxx| 中文字幕日韩专区| 日韩欧美国产免费播放| 久久综合色88| 亚洲天堂影视av| 亚洲欧美精品suv| 国产一区二区三区三区在线观看| 亚洲第一男人av| 日韩激情av在线播放| 黄网站色欧美视频| 亚洲影视九九影院在线观看| 亚洲国产精品电影在线观看| 欧美又大又粗又长| 亚洲日本中文字幕免费在线不卡| xxav国产精品美女主播| 中文字幕亚洲天堂| 亚洲性夜色噜噜噜7777| 国产精品综合久久久| www.日韩av.com| 在线国产精品视频| 久久中文字幕国产| 国产精品国产福利国产秒拍| 亚洲第一页在线| 欧美另类在线播放| 久久久视频免费观看| 亚洲精品第一国产综合精品| 菠萝蜜影院一区二区免费| 久久91精品国产91久久跳| 欧洲精品毛片网站| 中文字幕亚洲综合| 国产精品久久久久久久久久尿| 最近2019中文字幕第三页视频| 欧美日韩国产页| 91免费精品视频| 麻豆一区二区在线观看| 97人洗澡人人免费公开视频碰碰碰| 97在线免费观看视频| 欧美有码在线观看视频| 国产精品久久久久999| 亚洲午夜国产成人av电影男同| 尤物精品国产第一福利三区| 欧美成人免费在线观看| 日韩精品视频在线| y97精品国产97久久久久久| 欧美激情第6页| 91人人爽人人爽人人精88v| 亚洲最大成人免费视频| 国产精品久久久久久搜索| 国产精品a久久久久久| 亚洲最大福利网| 日韩精品中文字幕视频在线| 日韩精品免费在线视频观看| 亚洲欧美国产日韩天堂区| 亚洲剧情一区二区| 国产精品视频999| 国内精品美女av在线播放| 欧美日韩电影在线观看| 久久777国产线看观看精品| 色多多国产成人永久免费网站| 日韩在线观看成人| 久久久亚洲网站| 久久久在线观看| 亚洲v日韩v综合v精品v| 国产精品久久久久久久av大片| 91精品国产综合久久久久久蜜臀|