国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

在不同Activity之間傳遞數(shù)據(jù)的四種常用方法

2020-01-02 06:59:38
字體:
供稿:網(wǎng)友

在Android中傳遞數(shù)據(jù)的方法非常多,本次介紹4中比較常用的數(shù)據(jù)傳遞方法:

1.通過Intent傳遞數(shù)據(jù)

2.通過靜態(tài)變量(static)傳遞數(shù)據(jù)

3.通過剪貼板(Clipboard)傳遞數(shù)據(jù)

4.通過全局對象傳遞數(shù)據(jù)

在TransmitDataActivity.java中

package mobile.android.transmit.data;public class TransmitDataActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button button1=(Button)findViewById(R.id.button1);Button button2=(Button)findViewById(R.id.button2);Button button3=(Button)findViewById(R.id.button3);Button button4=(Button)findViewById(R.id.button4);button1.setOnClickListener(new ButtonListenner());button2.setOnClickListener(new ButtonListenner());button3.setOnClickListener(new ButtonListenner());button4.setOnClickListener(new ButtonListenner());}class ButtonListenner implements OnClickListener{@SuppressLint("NewApi")@Overridepublic void onClick(View view) {Intent intent=null;switch (view.getId()) {case R.id.button1:intent=new Intent(TransmitDataActivity.this,MyActivity1.class);//保存String類型的值intent.putExtra("intent_string", "通過Intent傳遞的字符串");//保存integer類型的值intent.putExtra("intent_integer", 300);Data data=new Data();data.id=1000;data.name="Android";//保存可序列化的對象intent.putExtra("intent_object", data);//顯示用于接收數(shù)據(jù)的ActivitystartActivity(intent);break;case R.id.button2:intent=new Intent();intent.setClass(TransmitDataActivity.this, MyActivity2.class);//下面的代碼為MyActivity2中放入三個靜態(tài)變量賦值MyActivity2.id=3000;MyActivity2.name="保時捷";MyActivity2.data=new Data();MyActivity2.data.id=5555;MyActivity2.name="Android";startActivity(intent);break;case R.id.button3:intent=new Intent(TransmitDataActivity.this,MyActivity3.class);//獲取剪貼板對象(ClipboardManager)ClipboardManager clipboard=(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);//創(chuàng)建Data對象Data clipboardData=new Data();//設(shè)置Data對象中字段的值clipboardData.id=6666;clipboardData.name="通過Clipboard傳遞的數(shù)據(jù)";//創(chuàng)建字節(jié)數(shù)組輸出流對象,用于將Data對象轉(zhuǎn)換為字節(jié)流ByteArrayOutputStream baos=new ByteArrayOutputStream();//用于保存Data對象生成Base64格式的字符串String base64Str="";try {ObjectOutputStream oos=new ObjectOutputStream(baos);//將Data對象寫入對象輸出流oos.writeObject(clipboardData);//將字節(jié)流進(jìn)行Base64編碼base64Str=Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);oos.close();} catch (IOException e) {e.printStackTrace();}//獲取存儲文本數(shù)據(jù)的剪貼板數(shù)據(jù)對象(ClipData)ClipData clipData=ClipData.newPlainText("data", base64Str);//設(shè)置主剪貼板clipboard.setPrimaryClip(clipData);//顯示Myactivity3窗口startActivity(intent);break;case R.id.button4://獲取MyApp對象MyApp myApp=(MyApp) getApplicationContext();myApp.country="美國";myApp.data.id=1234;myApp.data.name="飛碟";intent=new Intent(TransmitDataActivity.this,MyActivity4.class);startActivity(intent);break;default:break;}}}}

Data類:這個類是可序列化的,也就是實(shí)現(xiàn)了java.io.Serializable接口的類。

package mobile.android.transmit.data;import java.io.Serializable;public class Data implements Serializable{public int id;public String name;}

在Myactivity1.java中:package mobile.android.transmit.data;

public class MyActivity1 extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.myactivity);TextView textView=(TextView)findViewById(R.id.textview);//獲得String類型的值String intentString=getIntent().getStringExtra("intent_string");//獲得Integer類型的值int intentInteger=getIntent().getExtras().getInt("intent_integer");//獲得Data類型的值Data data=(Data) getIntent().getExtras().get("intent_object");StringBuffer sb=new StringBuffer();sb.append("Intent_string:");sb.append(intentString);sb.append("/n");sb.append("intent_integer:");sb.append(intentInteger);sb.append("/n");sb.append("data.id:");sb.append(data.id);sb.append("/n");sb.append("data.name:");sb.append(data.name);sb.append("/n");//在屏幕上輸出傳遞過來的值textView.setText(sb.toString());}}

在Myactivity2.java中:

package mobile.android.transmit.data;public class MyActivity2 extends Activity{public static String name;public static int id;public static Data data;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.myactivity);TextView textView=(TextView)findViewById(R.id.textview);StringBuffer sb=new StringBuffer();sb.append("name:");sb.append(name);sb.append("/n");sb.append("id:");sb.append(id);sb.append("/n");sb.append("data.id:");sb.append(data.id);sb.append("/n");sb.append("data.name:");sb.append(data.name);sb.append("/n");textView.setText(sb.toString());}}

在Myactivity3中:

package mobile.android.transmit.data;public class MyActivity3 extends Activity{@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.myactivity);TextView textView=(TextView)findViewById(R.id.textview);//獲取剪貼板對象ClipboardManager clipboardManager=(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);//從剪貼板中獲取Base64編碼字符串String base64Str=clipboardManager.getPrimaryClip().getItemAt(0).getText().toString();//將Base64編碼字符串編碼成字節(jié)數(shù)組byte[] buffer=Base64.decode(base64Str, Base64.DEFAULT);ByteArrayInputStream bais=new ByteArrayInputStream(buffer);try {ObjectInputStream ois=new ObjectInputStream(bais);//將字節(jié)流還原成Data對象Data data=(Data) ois.readObject();//將Base64編碼原文和Data對象字段值顯示在TextView控件中textView.setText(base64Str+"/n/ndata.id:"+data.id+"/ndata.name:"+data.name);} catch (Exception e) {e.printStackTrace();} }}

在Myactivity4.java中:

package mobile.android.transmit.data;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class MyActivity4 extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.myactivity);TextView textView=(TextView) findViewById(R.id.textview);MyApp myApp=(MyApp) getApplicationContext();textView.setText("MyApp.country:"+myApp.country+"/nMyApp.data.id:"+myApp.data.id+"/nMyApp.data.name:"+myApp.data.name);}}

關(guān)于在不同Activity之間傳遞數(shù)據(jù)的四種常用方法小編就給大家介紹這么多,希望對大家有所幫助!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 孝昌县| 高台县| 乐昌市| 都匀市| 北票市| 桑日县| 南召县| 友谊县| 宁河县| 裕民县| 保定市| 农安县| 黑龙江省| 兴宁市| 盈江县| 年辖:市辖区| 新野县| 喜德县| 茶陵县| 黑龙江省| 鄂尔多斯市| 汶上县| 昌江| 临夏市| 吉水县| 毕节市| 广平县| 通山县| 永嘉县| 德令哈市| 讷河市| 伽师县| 永靖县| 台江县| 京山县| 漳浦县| 富顺县| 阳曲县| 桦南县| 广丰县| 江陵县|