最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android學(xué)習(xí)筆記--Activity中使用Intent傳值示例代碼

 更新時(shí)間:2013年06月19日 16:57:45   作者:  
Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用
Intent,又稱為意圖,是一種運(yùn)行時(shí)綁定機(jī)制,它能在程序運(yùn)行的過(guò)程中鏈接兩個(gè)不同的組件(Activity、Service、BroadcastReceiver)。通過(guò)Intent,程序可以向Android表達(dá)某種請(qǐng)求或意愿,Android會(huì)根據(jù)意愿的內(nèi)容選擇適當(dāng)?shù)慕M件來(lái)請(qǐng)求。

在這些組件之間的通訊中,主要是由Intent協(xié)助完成的。Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個(gè)媒體中介的作用,專門(mén)提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。
通過(guò)Intent請(qǐng)求Activity,必須在AndroidManifest.xml文件中對(duì)被請(qǐng)求的Activity新增標(biāo)簽配置,否則會(huì)導(dǎo)致錯(cuò)誤。

Intent一般包含兩個(gè)主要信息,action、data。
action:表示這個(gè)Intent此次操作的動(dòng)作。
data:表示這次動(dòng)作涉及的數(shù)據(jù)。

通過(guò)一個(gè)例子來(lái)展示Activity中使用Intent導(dǎo)向新Activity并傳遞數(shù)據(jù)。此程序僅在兩個(gè)頁(yè)面之間相互跳轉(zhuǎn),但是每次跳轉(zhuǎn)會(huì)創(chuàng)建新的Activity,所以在startActivity()之后需要調(diào)用finish()銷(xiāo)毀當(dāng)前Activity,如果不銷(xiāo)毀,多次跳轉(zhuǎn)后,程序的Activity棧中會(huì)存放多個(gè)Activity,點(diǎn)擊設(shè)備的返回按鈕,會(huì)發(fā)現(xiàn)會(huì)一直向后退。

主要步驟:
新建Android項(xiàng)目,增加新布局文件other.xml,新增Activity類(lèi)otherActivity.class,用于接受Intent并展示other.xml。
在MainActivity類(lèi)中,聲明一個(gè)Intent類(lèi),通過(guò)Intent的構(gòu)造函數(shù)指明源和目標(biāo)。
獲得Intent后,使用Intent.putExtra()方法對(duì)其傳入數(shù)據(jù)。
調(diào)用Activity.startActivity啟動(dòng)這個(gè)Intent。
在otherActivity類(lèi)中,使用Activity.getIntent()獲得當(dāng)前Activity的Intent。
獲得Intent后,使用Intent.getXxxExtra()方法獲得其中保存的數(shù)據(jù)。
在AndroidManifest.xml配置otherActivity節(jié)點(diǎn)。

示例代碼
步驟2--3:
復(fù)制代碼 代碼如下:

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構(gòu)造函數(shù):Intent來(lái)源;Intent目的。
Intent intent =new Intent(MainActivity.this,otherActivity.class);
intent.putExtra("data", "當(dāng)前是頁(yè)面2,信息來(lái)自頁(yè)面1");
startActivity(intent);//啟動(dòng)Activity
finish();
}
});
}
}

步驟4--5:
復(fù)制代碼 代碼如下:

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);
//通過(guò)Activity.getIntent()獲取當(dāng)前頁(yè)面接收到的Intent。
Intent intent =getIntent();
//getXxxExtra方法獲取Intent傳遞過(guò)來(lái)的數(shù)據(jù)
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:
復(fù)制代碼 代碼如下:

<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中返回?cái)?shù)據(jù)
上面例子中只是介紹了Activity通過(guò)Intent傳遞數(shù)據(jù),然而在實(shí)際應(yīng)用中,不僅僅需要向Activity傳遞數(shù)據(jù),而且要從Activity中返回?cái)?shù)據(jù),雖然返回?cái)?shù)據(jù)和傳遞數(shù)據(jù)類(lèi)似,但是還是有部分區(qū)別。
主要區(qū)別如下:
傳遞數(shù)據(jù)需要使用Activity.startActivityForResult()方法啟動(dòng)Activity,需要傳遞請(qǐng)求碼,而不是Activity.startActivity()。
返回?cái)?shù)據(jù)的時(shí)候,調(diào)用Activity.setResult()方法設(shè)置返回Intent以及返回碼。
需要重寫(xiě)源Activity的onActivityResult()方法以便于接受返回的Intent,在onActivityResult()中會(huì)判斷請(qǐng)求碼和響應(yīng)碼。
通過(guò)一個(gè)例子說(shuō)明從Activity返回?cái)?shù)據(jù)。此程序有兩個(gè)Activity,在MainActivity中輸入加法運(yùn)算的計(jì)算數(shù),跳轉(zhuǎn)到otherActivity中輸入計(jì)算結(jié)果,并在點(diǎn)擊返回后,把計(jì)算結(jié)果輸出到MainActivity中。
示例代碼
MainActivity:
復(fù)制代碼 代碼如下:

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);
//啟動(dòng)需要監(jiān)聽(tīng)返回值的Activity,并設(shè)置請(qǐng)求碼:requestCode
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//當(dāng)otherActivity中返回?cái)?shù)據(jù)的時(shí)候,會(huì)響應(yīng)此方法
//requestCode和resultCode必須與請(qǐng)求startActivityForResult()和返回setResult()的時(shí)候傳入的值一致。
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:
復(fù)制代碼 代碼如下:

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) {
//新聲明一個(gè)Intent用于存放放回的數(shù)據(jù)
Intent i=new Intent();
int result=Integer.parseInt(etResult.getText().toString());
i.putExtra("three", result);
setResult(2, i);//設(shè)置resultCode,onActivityResult()中能獲取到
finish();//使用完成后結(jié)束當(dāng)前Activity的生命周期
}
});
}
}

相關(guān)文章

最新評(píng)論

平远县| 拜泉县| 东港市| 石渠县| 东乌珠穆沁旗| 永安市| 蒲城县| 祁阳县| 宜章县| 融水| 宝山区| 广东省| 武山县| 宾川县| 墨竹工卡县| 桓台县| 韶山市| 西林县| 乐东| 大理市| 广宗县| 蒲江县| 元江| 黔西| 巫山县| 磐石市| 综艺| 大渡口区| 易门县| 临邑县| 融水| 双流县| 神木县| 徐闻县| 包头市| 西畴县| 松阳县| 台东市| 上高县| 米林县| 金秀|